天天看點

Cordova startActivityForResult

CordovaInterface接口說明

CordovaInterface 接口預設是由 CordovaInterfaceImpl 類實作的,當中包括了一個Activity對象。

當打開APP時 Cordova 會預設啟動此 Activity 以承載 Cordova 核心引擎對程式進行管理。

ExecutorService 則負責對象對線程池進行管理,

PluginManager則負責對插件進行管理,

CordovaPlugin則是Cordova插件的父類,所有插件都必須繼承CordovaPlugin。

CordovaInterfaceImpl三個最常用方法

1. 方法

    void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode)

   說明

    綁定CordovaPlugin參數,并調用Activity對象的startActivityForResult(intent, requestCode)方法,根據 intent 綁定值跳轉到對應的activity

2. 方法

    void setActivityResultCallback(CordovaPlugin plugin)

   說明

    激發CordovaPlugin對象的onActivityResult事件

3.  方法

     boolean onActivityResult(int requestCode, int resultCode, Intent intent)

    說明

     封裝Acticity對象的onActivityResult回調函數, 激發CordovaPlugin對象的onActivityResult事件

補充說明:

    startActivityForResult(cordovaPlugin,intent,int)方法啟動該Activity。

    當 Activity 結束後,系統将調用回調函數 onActivityResult(int requestCode, int resultCode, Intent intent)

    而setActivityResultCallback(CordovaPlugin plugin)可以主動觸發某一個插件的onActivityResult回調監聽

運作邏輯描述:

    CordovaPlugin繼承類通過startActivityForResult(cordovaPlugin,intent,int)方法啟動原生Activity。

    原生Activity 被觸發後先通過 setContentView 方法綁定視圖,再從intent 對象中擷取輸入參數進行處理。

    當原生Activity執行完本地邏輯後,通過 Activity 類的setResult(int resultCode, Intent data) 方法綁定傳回值。

    其中resultCode可被 cordovaPlugin 插件用作判斷傳回值的處理結果。

    然後調用原生Activity對象的 finish 方法關閉目前Activity,把傳回值回傳到 CordovaPlugin。

    原生activity關閉後,cordovaPlugin 插件通過調用回調函數 onActivityResult(int requestCode, int resultCode, Intent intent),

    回調函數中可根據 resultCode 參數判斷處理情況,根據不同的結果對intent 中的傳回值 bundler 對象進行不同處理。

    最後使用 callbackContext 對象中的 success(string) 方法把處理結果回傳到頁面。