Тестовая страница http://www.kitayka.net/search или любая другая с embed
Подскажите, как перехватить нажатие на BACK при играющем видео, что бы поведение было аналогичным стандартному браузеру со стандартным проигрывателем (видео должно прерываться и появляться опять WebView).
MainActivity.java
Код: Выделить всё
package com.example.ytvideoplayer;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebChromeClient.CustomViewCallback;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
WebView wv_view;
MyWebChromeClient mMyWebChromeClient;
CustomViewCallback mCustomViewCallback;
LinearLayout mMainContentContainer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMainContentContainer = (LinearLayout) findViewById(R.id.ll_mainContainer);
wv_view = (WebView) findViewById(R.id.wv_view);
wv_view.getSettings().setJavaScriptEnabled(true);
wv_view.getSettings().setPluginsEnabled(true);
// CookieSyncManager.createInstance(this);
// CookieManager cookieManager = CookieManager.getInstance();
// cookieManager.removeAllCookie();
wv_view.clearCache(true);
wv_view.setWebViewClient(new MyWebViewClient());
mMyWebChromeClient = new MyWebChromeClient();
wv_view.setWebChromeClient(mMyWebChromeClient);
wv_view.loadUrl("http://www.kitayka.net/search");
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i("tag_video", "shouldOverrideUrlLoading()" + url);
return super.shouldOverrideUrlLoading(view, url);
}
}
private class MyWebChromeClient extends WebChromeClient {
private View mCustomView;
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
Log.i("tag_video", "onShowCustomView()");
if (mCustomView != null) {
callback.onCustomViewHidden();
Log.i("tag_video", "mCustomView != null");
} else {
mCustomView = view;
mCustomViewCallback = callback;
wv_view.setVisibility(View.GONE);
LinearLayout.LayoutParams lllp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
mMainContentContainer.addView(view, lllp);
}
}
@Override
public void onHideCustomView() {
Log.i("tag_video", "onHideCustomView()");
if (mCustomView != null) {
Log.i("tag_video", "mCustomView != null");
mMainContentContainer.removeView(mCustomView);
mCustomViewCallback.onCustomViewHidden();
mCustomView = null;
wv_view.setVisibility(View.VISIBLE);
}
}
}
@Override
public void onBackPressed() {
Log.i("tag_video", "onBackPressed");
if (wv_view.canGoBack()) {
wv_view.goBack();
} else {
super.onBackPressed();
}
}
}
Код: Выделить всё
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll_mainContainer"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<WebView
android:id="@+id/wv_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<uses-permission android:name="android.permission.INTERNET" />