使用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);
}

这些方法针对混合开发的朋友们估计都慵烂了,但是一直原生开发的朋友们估计没接触过,发出来做个记录,后面可以引申使用

你可能感兴趣的:(Android开发常见问题总结,web相关)