Приложение Android Webview не позволит проигрывателю проигрывать весь экран

Привет, я создал приложение для веб-просмотра для своего видеосайта. Дизайн сайта – это гибрид, который загружается для мобильных пользователей. На гибрид загружаются только видео, совместимые с мобильными устройствами. Игроки из Vk, dailymotion, youtube, quicktime. Видео воспроизводятся только на sdk 11 и выше, но когда я нажимаю кнопку плеера, чтобы перейти в полноэкранный режим, он останавливает воспроизведение видео, не запуская его в полноэкранном режиме. Я ввожу столько же кода, сколько могу, надеюсь, кто-то может мне помочь. Я догадался об этом до смерти без каких-либо успехов. Любая помощь будет принята с благодарностью.

(Webviewactivity.java)

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.main); parentView = (RelativeLayout) findViewById(R.id.parent_rl); webviewProgress = (ProgressBar) findViewById(R.id.webview_progress); webview = (WebView) findViewById(R.id.webview); webview.getSettings().setJavaScriptEnabled(true); webview.getSettings().setBuiltInZoomControls(true); webview.getSettings().setAllowFileAccess(true); webview.setWebViewClient(new MyWebViewClient()); webview.getSettings().setPluginState(WebSettings.PluginState.ON); webview.loadUrl(URL); webviewProgress.setProgress(0); webview.setWebChromeClient(new MyWebChromeClient()); webview.setDownloadListener(new DownloadListener() { public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { mProgressDialog = new ProgressDialog(WebViewActivity.this); mProgressDialog.setMessage("Downloading..."); mProgressDialog.setIndeterminate(false); mProgressDialog.setMax(100); mProgressDialog .setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); DownloadFile downloadFile = new DownloadFile(); downloadFile.execute(url); } }); initSlider(); initAdmob(); } /** * When when file was chosen */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == FILECHOOSER_RESULTCODE) { if (null == mUploadMessage) return; Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData(); mUploadMessage.onReceiveValue(result); mUploadMessage = null; 

(Main.xml)

 android:id="@+id/parent_rl" android:layout_width="fill_parent" android:layout_height="fill_parent" android:keepScreenOn="true" > <ProgressBar android:id="@+id/webview_progress" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:maxHeight="5dip" android:minHeight="5dip" android:progressDrawable="@drawable/blueprogress" /> <FrameLayout android:id="@+id/framelayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/webview_progress" android:orientation="vertical" > <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 

(Manifest.xml)

 package="com.wCHfree" android:versionCode="7" android:versionName="1.1" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:icon="@drawable/ic_launcher_red" android:label="@string/app_name" android:theme="@android:style/Theme.Black" > <activity android:name="com.webview.splashScreen.SplashScreenActivity" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.webview.splashScreen.WebViewActivity" android:configChanges="orientation|screenSize|screenLayout" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > </activity> <activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" /> Размер package="com.wCHfree" android:versionCode="7" android:versionName="1.1" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:icon="@drawable/ic_launcher_red" android:label="@string/app_name" android:theme="@android:style/Theme.Black" > <activity android:name="com.webview.splashScreen.SplashScreenActivity" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.webview.splashScreen.WebViewActivity" android:configChanges="orientation|screenSize|screenLayout" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > </activity> <activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" /> 

    Вам нужно реализовать showCustomView & hideCustomView WebChromeClient, также вам нужен android:hardwareAccelerated="true" в вашем файле AndroidManifest. Я размещаю свой пример проекта здесь. То, что я сделал, содержит один файл Framelayout (customContainer) в моем main.xml и добавление вида, полученного в showCustomView, и удаление его в onHide. Также скрывается / отображается webview соответственно. Ниже код отлично работает на устройстве.

    AndroidManifest.xml

     <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.webview" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8"/> <uses-permission android:name="android.permission.INTERNET"/> <application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:hardwareAccelerated="true"> <activity android:name="MyActivity" android:configChanges="orientation|keyboardHidden" android:hardwareAccelerated="true" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest> ? <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.webview" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8"/> <uses-permission android:name="android.permission.INTERNET"/> <application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:hardwareAccelerated="true"> <activity android:name="MyActivity" android:configChanges="orientation|keyboardHidden" android:hardwareAccelerated="true" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest> 

    main.xml

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <WebView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/webView" android:layout_gravity="center" /> <FrameLayout android:id="@+id/customViewContainer" android:layout_width="fill_parent" android:layout_height="fill_parent" android:visibility="gone" /> </LinearLayout> 

    video_progress.xml

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/progress_indicator" android:orientation="vertical" android:layout_centerInParent="true" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ProgressBar android:id="@android:id/progress" style="?android:attr/progressBarStyleLarge" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:paddingTop="5dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="loading" android:textSize="14sp" android:textColor="?android:attr/textColorPrimary"/> </LinearLayout> 

    MyActivity.java

     package com.example.webview; import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.FrameLayout; public class MyActivity extends Activity { private WebView webView; private FrameLayout customViewContainer; private WebChromeClient.CustomViewCallback customViewCallback; private View mCustomView; private myWebChromeClient mWebChromeClient; private myWebViewClient mWebViewClient; /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); customViewContainer = (FrameLayout) findViewById(R.id.customViewContainer); webView = (WebView) findViewById(R.id.webView); mWebViewClient = new myWebViewClient(); webView.setWebViewClient(mWebViewClient); mWebChromeClient = new myWebChromeClient(); webView.setWebChromeClient(mWebChromeClient); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setAppCacheEnabled(true); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setSaveFormData(true); webView.loadUrl("http://m.youtube.com"); } public boolean inCustomView() { return (mCustomView != null); } public void hideCustomView() { mWebChromeClient.onHideCustomView(); } @Override protected void onPause() { super.onPause(); //To change body of overridden methods use File | Settings | File Templates. webView.onPause(); } @Override protected void onResume() { super.onResume(); //To change body of overridden methods use File | Settings | File Templates. webView.onResume(); } @Override protected void onStop() { super.onStop(); //To change body of overridden methods use File | Settings | File Templates. if (inCustomView()) { hideCustomView(); } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (inCustomView()) { hideCustomView(); return true; } if ((mCustomView == null) && webView.canGoBack()) { webView.goBack(); return true; } } return super.onKeyDown(keyCode, event); } class myWebChromeClient extends WebChromeClient { private Bitmap mDefaultVideoPoster; private View mVideoProgressView; @Override public void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback) { onShowCustomView(view, callback); //To change body of overridden methods use File | Settings | File Templates. } @Override public void onShowCustomView(View view,CustomViewCallback callback) { // if a view already exists then immediately terminate the new one if (mCustomView != null) { callback.onCustomViewHidden(); return; } mCustomView = view; webView.setVisibility(View.GONE); customViewContainer.setVisibility(View.VISIBLE); customViewContainer.addView(view); customViewCallback = callback; } @Override public View getVideoLoadingProgressView() { if (mVideoProgressView == null) { LayoutInflater inflater = LayoutInflater.from(MyActivity.this); mVideoProgressView = inflater.inflate(R.layout.video_progress, null); } return mVideoProgressView; } @Override public void onHideCustomView() { super.onHideCustomView(); //To change body of overridden methods use File | Settings | File Templates. if (mCustomView == null) return; webView.setVisibility(View.VISIBLE); customViewContainer.setVisibility(View.GONE); // Hide the custom view. mCustomView.setVisibility(View.GONE); // Remove the custom view from its container. customViewContainer.removeView(mCustomView); customViewCallback.onCustomViewHidden(); mCustomView = null; } } class myWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return super.shouldOverrideUrlLoading(view, url); //To change body of overridden methods use File | Settings | File Templates. } } } 

    Здесь вы можете клонировать образец проекта.