uni app 原生打包填坑之onActivityResult回调出错问题

1,464 阅读1分钟

问题:

uniapp 中onActivityResult回调在进入下一个activity的时候就执行了,真正返回的时候反而不会执行。我需要监听acticity的生命周期,这让我一个原生安卓开发很懵逼。

解决思路:

1.原生Android的activity中使用 sp存储值。

@Override
    protected void onResume() {
        super.onResume();
        //正在视频
        SPUtils.getInstance().putBoolean("video", true);
    }

    @Override
    protected void onPause() {
        super.onPause();
        //退出视频
        SPUtils.getInstance().putBoolean("video", false);
    }

2.js 插件调用Android 函数获取步骤1的值。

//JS

document.addEventListener('plusready', function() {
	var _BARCODE = 'PGPlugintest',
            B = window.plus.bridge;
    var PGPlugintest={PluginTestFunction : function (Argus1,successCallback, errorCallback ){
    			var success = typeof successCallback !== 'function' ? null : function(args) {
    				successCallback(args);
    			},
    			fail = typeof errorCallback !== 'function' ? null : function(code) {
    				errorCallback(code);
    			};
    			callbackID = B.callbackId(success, fail);

    			return B.exec(_BARCODE, "PluginTestFunction", [callbackID, Argus1]);
    		}
        };
    window.plus.PGPlugintest=PGPlugintest;
});

plus.PGPlugintest.PluginTestFunction("Html5",
       function(result){
            localStorage.setItem(VIDEO_STATES, result);
        });

//Android 
public class PGPlugintest extends StandardFeature {

    public void PluginTestFunction(IWebview pWebview, JSONArray array) {
        // 原生代码中获取JS层传递的参数,
        // 参数的获取顺序与JS层传递的顺序一致
        String CallBackID = array.optString(0);
        boolean video = SPUtils.getInstance().getBoolean("video", false);
        JSONArray newArray = new JSONArray();
        newArray.put(video);
        // 调用方法将原生代码的执行结果返回给js层并触发相应的JS层回调函数
        JSUtil.execCallback(pWebview, CallBackID, newArray, JSUtil.OK, false);

    }
}

3.uniapp 实现这个插件功能要记得修改配置。

//dcloud_properties.xml
<feature name="PGPlugintest" value="com.xxx.PGPlugintest"/>

//manifest.json
"PGPlugintest": {
  "description": "是否正在视频"
}