Intereting Posts
Цвет тени на кнопках в зависимости от состояния в XML – Android Как разрешить пользователю выбирать текстовый диапазон в TextView (аналогично EditText) Ошибка WebView с помощью java.io.IOException: сбой закрытия: EIO (ошибка ввода-вывода) libcore.io.IoUtils.close (IoUtils.java:41) «Ошибка получения информации с сервера RPC S-7 AEC-0» при тестировании биллинга Google в приложении Как подключить MediaPlayer с SurfaceView в Android? Изменение размера виджета Android Android AVD на Eclipse показывает «Пустой экран» без активности Android Studio E / dalvikvm: Не удалось найти класс '.DatabaseHelper', на который ссылается метод .DatabaseManager Используйте клавишу «ENTER» на программной клавиатуре вместо кнопки Видимость панели обнаружения / TYPE_SYSTEM_OVERLAY не изменяется автоматически Как скрыть OptionsMenu на NavigationDrawer с помощью фрагментов? При использовании Gson появляется странное имя «nameValuePairs» Android меняет цвета с темами Переход с Sharedelement между текстом и заголовком панели инструментов Получить контекст активности в адаптере из фрагмента

Встроенное видео IFRAME продолжает играть в фоновом режиме после выхода из полноэкранного режима в Android

Я много искал для исправления этой проблемы, но, видимо, я не мог ее найти. Ну, как видно из названия, у меня есть простое приложение для Android, у которого есть Webview.

public class MainActivity extends Activity { protected FrameLayout webViewPlaceholder; protected WebView webView; final Context myApp = this; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Initialize the UI initUI(); } protected void initUI() { // Retrieve UI elements webViewPlaceholder = ((FrameLayout)findViewById(R.id.webViewPlaceholder)); // Initialize the WebView if necessary if (webView == null) { // Create the webview webView = new WebView(this); webView.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); webView.getSettings().setSupportZoom(true); webView.getSettings().setBuiltInZoomControls(true); webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); webView.setScrollbarFadingEnabled(true); webView.getSettings().setLoadsImagesAutomatically(true); // Load the URLs inside the WebView, not in the external web browser webView.setWebViewClient(new WebViewClient()); //webView.setWebChromeClient(new CustomChromeClient(this)); webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result) { new AlertDialog.Builder(myApp) .setTitle("javaScript dialog") .setMessage(message) .setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { result.confirm(); } }) .setCancelable(false) .create() .show(); return true; }; public void onShowCustomView(View view, CustomViewCallback callback){ super.onShowCustomView(view, callback); Log.i("ChromeCLient", "onshowCustomView"); new AlertDialog.Builder(myApp) .setTitle("javaScript dialog") .setMessage("ajbdlsakndsland") .setCancelable(true) .create() .show(); } @Override public void onHideCustomView() { super.onHideCustomView(); Log.i("ChromeCLient", "onhideCustomView"); } }); webView.getSettings().setJavaScriptEnabled(true); if (Build.VERSION.SDK_INT < 8) { webView.getSettings().setPluginsEnabled(true); } else { webView.getSettings().setPluginState(WebSettings.PluginState.ON); } // Load a page webView.loadUrl("http://jsbin.com/ijixe4/3"); } // Attach the WebView to its placeholder webViewPlaceholder.addView(webView); } @Override public void onConfigurationChanged(Configuration newConfig) { if (webView != null) { // Remove the WebView from the old placeholder webViewPlaceholder.removeView(webView); } super.onConfigurationChanged(newConfig); // Load the layout resource for the new configuration setContentView(R.layout.activity_main); // Reinitialize the UI initUI(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); // Save the state of the WebView webView.saveState(outState); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); // Restore the state of the WebView webView.restoreState(savedInstanceState); } } 

Моя проблема заключается в следующем. Сайт, загружаемый в веб-просмотр, – это сайт, который содержит простой встроенный видеоизображение iframe. Когда я нажимаю кнопку FullScreen на видео youtube, она меняет ориентацию моего приложения, хотя я устанавливаю в своем манифесте: screenOrientation = «портрет». При выходе из FullScreen во время воспроизведения видео продолжает воспроизводиться (в фоновом режиме), даже если веб-просмотр был воссоздан из-за изменения ориентации. Я попытался уничтожить веб-просмотр в методе onDestroy () активности, когда ориентация переходит от пейзажа к портрету. Но это не помогло. Я попытался настроить CustomWebChromeClient для веб-просмотра и реализовать метод onShowCustomView (), но onShowCustomView (), по-видимому, не вызывается, если я не использую видео HTML5. Я даже попытался сохранить состояние веб-просмотра через изменение ориентации.

У вас, ребята, есть другой способ решить эту проблему / ошибку? Я бы не хотел использовать HTML-тег HTML5. Заранее спасибо.

Просто переопределите методы onPause и onResume и вызовите те же методы в webView следующим образом.

 @Override protected void onResume() { super.onResume(); this.webView.onResume(); } @Override protected void onPause() { super.onPause(); this.webView.onPause(); } 

Я нашел это , столкнувшись с одной и той же проблемой:

 webView.loadData("", "text/html", "utf-8"); // in onDestroy/onFinish 

Он останавливает воспроизведение видео. Может быть полезно. Я не могу сказать прямо сейчас, если это поможет вам, но вы должны попробовать его в изменении ориентации или что-то еще. <BTW Youtube имеет свой собственный API, поэтому, возможно, лучше использовать его вместо WebView