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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    006_linux驱动之_ioremap函数使用
    004_linux驱动之_class_create创建一个设备类
    003_linux驱动之_file_operations函数
    002_linux驱动之_register_chrdev注册字符设备
    001_linux驱动之_驱动的加载和卸载
    007_linuxC++之_构造函数的初级应用
    006_linuxC++之_引用
    005_linuxC++之_指针的引入
    004_linuxC++之_函数的重载
    003_linuxC++之_namespace使用
  • 原文地址:https://www.cnblogs.com/freeliver54/p/10143725.html
Copyright © 2011-2022 走看看