android webview返回时不退出

用户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);
        }

    }
}