用户andriod webview封装好一个webapp后 ,发现webapp网页跳转后,点手机的返回键,不是返回上一页面,而是直接退出app。
解决方法:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) ) {
if (mWebView.canGoBack())
{
mWebView.goBack(); //goBack()表示返回WebView的上一页面
return true;
}else
{
finish();
return true;
}
}
return false;
}
完整代码:
public class MainActivity extends AppCompatActivity {
private WebView mWebView;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) ) {
if (mWebView.canGoBack())
{
mWebView.goBack(); //goBack()表示返回WebView的上一页面
return true;
}else
{
finish();
return true;
}
}
return false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();
getWindow().setStatusBarColor(Color.BLACK);
// 实例化
mWebView = (WebView) findViewById(R.id.mWebView);
String ua = mWebView.getSettings().getUserAgentString();
mWebView.getSettings().setUserAgentString(ua + ";cd-info/v1");
// 开启javascript 渲染
mWebView.getSettings().setJavaScriptEnabled(true);
// mWebView.setWebViewClient(new WebViewClient());
mWebView.setWebViewClient(new MyWebViewClient());
// 载入内容
mWebView.loadUrl("http://new.duolupian.net/School/Wx/Index/index");
}
private class MyWebViewClient extends WebViewClient
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
try
{
if (url.startsWith("weixin://wap/pay?"))
{
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
}
}
catch (Exception e)
{
e.printStackTrace();
//调起微信页面失败,自己看着办...
}
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
{
//高版本可以在这里拦截,but低版本这里不会每次都调用!
//根据测试Android 6.0在这拦截无效
return super.shouldOverrideUrlLoading(view, request);
}
}
}