1. 程式人生 > >Cordova Android 返回鍵攔截(backbutton)和退出(再點選一次跳出)

Cordova Android 返回鍵攔截(backbutton)和退出(再點選一次跳出)

在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()方法就徹底不能用了,所以,用了攔截的再點一次退出就在攔截裡處理吧

相關推薦

Cordova Android 返回攔截backbutton退出跳出

在Android原生webview裡重寫onBackPressed()就可以。 @Override public void onBackPressed() { super.onBackPressed(); } 但在Cord

Android--實現返回返回桌面而不是退出應用

點選一次返回鍵的時候不是退出應用而是返回到桌面,比如像QQ和微信等聊天軟體,在主介面點選返回鍵的時候不是退出應用而是返回到桌面,那麼怎麼能夠實現這種需求呢?其實也很簡單,只需要重寫onKeyDown(

25.cocos2d-x物理引擎螢幕新增一個小球

HelloWorldScene.h檔案: #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" USING_NS_CC; class Hell

進度條進一點,意思是後臺傳入個數就進度就多一點

<!DOCTYPE"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>進度條</title> <style type="text

cocos2dx之WebView踩過的坑android返回處理問題

lib mar 是否 12px blog tex clas ons 測試的   最近遊戲接入了一個私服平臺,由於沒有sdk,所以支付相關的操作需要在網頁端進行,也就是說點擊充值需要在遊戲內部彈出一個網頁,並定位到平臺充值的地址。查閱相關資料後決定使用cocos2dx自帶的W

Flutter學習筆記26--返回攔截WillPopScope,實現1秒內返回按鈕退出程式

如需轉載,請註明出處:Flutter學習筆記(26)--返回攔截WillPopScope,實現1秒內點選兩次返回按鈕退出程式 在實際開發中,為了防止使用者誤觸返回按鈕導致程式退出,通常會設定為在1秒內連續點選兩次才會退出應用程式。Android中一般的處理方式是在onKeyDown方法內做計時處理,當keyC

SpringMVC的攔截Interceptor過濾器Filter的區別與聯系

get err 實例 分享 切面 簡介 () lee XML 一 簡介 (1)過濾器: 依賴於servlet容器。在實現上基於函數回調,可以對幾乎所有請求進行過濾,但是缺點是一個過濾器實例只能在容器初始化時調用一次。使用過濾器的目的是用來做一些過濾操作,獲取我們想要獲取

Android 在fragment中實現返回單擊提醒 雙擊退出

make listener 一次 time lean 適配器 == sea dagger2 嘗試用mvp架構加dagger2來重寫了一下,大致功能都實現了,還沒有全部完成。 項目地址 接近完成的時候,想在天氣信息頁面實現一個很常見的功能,也就是點擊屏幕下方的返回鍵的時

過載Overload重寫Override的區別。過載的方法能否根據返回型別進行區分?

方法的過載和重寫都是實現多型的方式,區別在於前者實現的是編譯時的多型性,而後者實現的是執行時的多型性。過載發生在一個類中,同名的方法如果有不同的引數列表(引數型別不同、引數個數不同或者二者都不同)則視為過載;重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的返回型別,比父類被重

spring中過濾器filter攔截interceptor切面aop的執行順序

1.程式執行的順序是先進過濾器,再進攔截器,最後進切面。注意:如果攔截器中preHandle方法返回的為false時,則無法進入切面,例子如下 @RestController @RequestMapping("/user") public class UserController {

Android開發實現返回實現退出功能

在使用android平臺的app是我們經常會發現點選兩次返回鍵會提示是否 退出的功能,下面講講此功能是如何實現的(此方法比較簡單) 第一種方法是對系統返回鍵進行監聽,定義一個變數記錄按鍵時間,通過計算時間差來實現該功能,程式碼如下: //退出時的時間 private long mExitTime;

攔截Interceptor過濾器Filter的執行順序區別

一、引言 本來想記錄一下關於使用者登陸和登陸之後的許可權管理、選單管理的問題,想到解決這個問題用到Interceptor,但想到了Interceptor,就想到了Filter,於是就想說一下它們的執行順序和區別。關於Interceptor解決許可權和選單管理的問題,在放

Android安全/開發基礎--10--圖形介面UI碎片Fragment

10-1、View理論 View的事件體系 View是Android中所有控制元件的基類。ViewGroup是控制元件組,內部包含了許多控制元件。 view的四個位置屬性:top、left、right、bottom MotionEvent:手指接觸屏幕後產生的

Android安全/開發基礎--11--圖形介面UI碎片Fragment

10-9、UI fragment與fragment管理器 採用fragment而不是activity來管理應用UI,可繞開Android系統activity使用規則的限制。fragment是一種控制器物件,activity可委派它執行任務。這些任務通常就是管理使

Android 返回直接返回桌面---不關閉頁面

比如網易雲音樂的返回按鈕---不關閉頁面---直接返回到桌面還有類似於QQ的//設定返回按鈕:不應該退出程式---而是返回桌面 //複寫onKeyDown事件 @Override public boolean onKeyDown(int keyCode

ionic框架對Android返回的處理

       在HybridApp移動跨平臺開發中,android平臺會遇到一些比較特殊並難以解決的問題,這些問題在原生應用開發中很easy, Android的返回鍵處理就是問題之一,假如我們要實現一個在很多App中都有的在主頁按返回鍵彈出對話方塊提示使用者退出應用的功能,

加速 Accelerator 熱鍵HotKey [轉]

加速鍵 (Accelerator)和 熱鍵(HotKey) 加速鍵 和 熱鍵 是兩種不同的快捷鍵(我這裡暫且把它們都稱為快捷鍵,而其他人可能只把後者稱為快捷鍵。)應儘量避免衝突。 加速鍵 (Accelerator) 一種是直接與選單項關聯的加速鍵 另一種就是自定義的加

Android返回後臺程式不退出

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { // 過濾按鍵動作 if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { mo

android基礎】之Android返回處理(事件)

public class SenseSoccerScoreActivity extends Activity { public boolean onKeyDown(int keyCode, KeyEvent event) { // 如果是返回鍵,直接返回到桌面 //

Android assets資料夾之位置放置作用 AS eclipse中的

Android 的assets資料夾的放置位置,Eclipse建立專案時就生成了的,Android Studio則不太一樣,AS可以包含幾種方式, 1:可以在build.gradle檔案下配置,加如下程式碼  " sourceSets { main { assets.srcDirs = ['src/ass