zoukankan      html  css  js  c++  java
  • [转]Cordova Android 返回键拦截(backbutton)和退出(再点击一次跳出)

    本文转自:https://blog.csdn.net/aierJun/article/details/53944061


    在Android原生webview里重写onBackPressed()就可以。
    @Override
    public void onBackPressed() {
    super.onBackPressed();
    }

    但在CordovaWebView里已经被cordovawebview处理掉了,重写onBackPressed()没用。
    注意:但onBackPressed()方法在最后一个页面会实现,所以要在最后主页面实现点击出现再点击一次退出,在这处理是可以的。
    代码如下:
    @Override
    public void onBackPressed() {
    LogUtils.LogUtils(".............onBackPressed...............");
    if (webView.canGoBack()){
    webView.goBack();
    }else {
    exit();
    }
    }
    // 定义一个变量,来标识是否退出
    private static boolean isExit = false;

    Handler mHandler = new Handler() {

    @Override
    public void handleMessage(Message msg) {
    super.handleMessage(msg);
    isExit = false;
    }
    };
    private void exit() {
    if (!isExit) {
    isExit = true;
    Toast.makeText(getApplicationContext(), R.string.exit_again,
    Toast.LENGTH_SHORT).show();
    // 利用handler延迟发送更改状态信息
    mHandler.sendEmptyMessageDelayed(0, API.HANDLER_MAIN);
    } else {
    super.onBackPressed();
    ClearCacheUtils.cleanDatabases(MainActivity.this); //暂时可以清楚缓存,当涉及到保存用户账户密码时一定要关闭
    finish();
    }
    }

    关于在网页中拦截处理也是可以。

    function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
    }

    // device APIs are available
    //
    function onDeviceReady() {
    // Register the event listener
    document.addEventListener("backbutton", onBackKeyDown, false);
    }

    // Handle the volume up button
    //
    function onBackKeyDown() {
    goback();
    cordova.save.save();
    }
    function goback() {
    setTimeout(function () {
    history.go(-1);
    }, 200);
    }

    注意:使用了网页的拦截后onBackPressed()方法就彻底不能用了,所以,用了拦截的再点一次退出就在拦截里处理吧
    ---------------------
    作者:Ani_aierJun
    来源:CSDN
    原文:https://blog.csdn.net/aierJun/article/details/53944061
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    洛谷P3953 逛公园
    洛谷P1247 取火柴游戏
    洛谷P2024 食物链
    洛谷P2680 运输计划
    hdu 1495 非常可乐(bfs)
    poj3984 迷宫问题(简单的输出路径的bfs)
    Codeforces 729C Road to Cinema(二分)
    Codeforces Technocup 2017
    Codeforces Technocup 2017
    poj 2251 Dungeon Master(bfs)
  • 原文地址:https://www.cnblogs.com/freeliver54/p/10143725.html
Copyright © 2011-2022 走看看