问题:
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": "是否正在视频"
}