使用JS調用安卓原生Activity並獲取返回結果

        最近有個需求,使用車牌識別,由於項目前期定型時使用的Html 5plus,使用的是上傳圖片到服務器然後調用百度的SDK把識別結果返回給前端,這個項目還是使用Hbuilder離線打包出來的版本,對前端是一知半解的,還是習慣使用AS來調試,然後就集成一個原生OCR版本的識別,後面遇到了一個問題,項目整體都是H5的,我得寫個工具類提供方法跳轉識別界面,並獲取到返回結果,之前做的都是activity跳轉activity,頭次遇到這種H5直接調用原生方法去獲取返回結果,後面查了資料找到了解決方法,直接上代碼,下面是工具類裏面的跳轉識別activity的方法:

    /**
     * 識別方法
     *
     * @param context
     */
    public static void doScan(Activity activity) {
        Intent intent = new Intent(activity, PlateidCameraActivity.class);
        //有拍照識別和視頻識別,true是拍照識別,false是視頻識別,需要攜帶參數到識別Activity
        coreSetup.takePicMode = false;
        intent.putExtra("coreSetup", coreSetup);
        activity.startActivityForResult(intent, 1);
    }

接下來是識別activity裏獲取識別結果後返回數據部分,這個部分都是常用的傳參方法:

 /***
     * 獲取到結果
     * @param activity 實體類
     * @param recogResult 識別結果
     * @param savePicturePath 保存圖片路徑
     */
    public void getResultFinish(Activity activity, String[] recogResult, int screenDirection,  String savePicturePath) {
        Intent intent = new Intent();
        intent.putExtra("RecogResult", recogResult);
        intent.putExtra("CarRecogResult", recogResult[0]);
        intent.putExtra("CarColorRecogResult", recogResult[1]);
        intent.putExtra("savePicturePath", savePicturePath);
        intent.putExtra("screenDirection", screenDirection);
        activity.setResult(RESULT_OK, intent);
        activity.finish();
    }

接下來就是H5代碼中使用js調用原生方法並獲取返回結果的代碼:

var main = plus.android.runtimeMainActivity();
plus.android.invoke("com.print.PrintUtil", "doScan", main);
main.onActivityResult = function(requestCode, resultCode, data) {
if('1' == requestCode) {
    plus.android.importClass(data);
    var bundle=data.getExtras();
    plus.android.importClass(bundle);
    var carNumber = bundle.getString("CarRecogResult");
    var carColor = bundle.getString("CarColorRecogResult");
    var savePicturePath = bundle.getString("savePicturePath");
    alert(carNumber+"dddd"+carColor+"dddd"+savePicturePath);
}

這些方法針對混合開發的朋友們估計都慵爛了,但是一直原生開發的朋友們估計沒接觸過,發出來做個記錄,後面可以引申使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章