需求流程:
用app打开小程序,进入小程序,支付功能成功/失败后,将参数传递到app。
现象:
用app打开小程序可顺利打开,进入小程序后要回调app时,安卓调试运行的时候可以,但离线打包不行,ios正常
用app打开小程序代码如下:(可顺利调起小程序)
let sweixin = null
plus.share.getServices(function(s) {
let weixinArray = s.filter(el => el.id == 'weixin');
sweixin = weixinArray && weixinArray.length > 0 ? weixinArray[0] : null
}, function(e) {
// plus.nativeUI.alert("获取分享服务列表失败: " + JSON.stringify(e));
plus.nativeUI.alert("获取分享服务列表失败");
});
function launchMiniProgram(params = {}) {
let options = {}
options.id = params.id || 'gh_************'
options.path = params.route
try {
let url2 = '***********.wxapi.WxLaunchApp'
var dlg = plus.android.newObject(url2);
// uni-app调起小程序的时候,调用安卓原生方法,启动监听,安卓原生createWXAPI方法在下面
plus.android.invoke(dlg, 'createWXAPI')
} catch (e) {
console.log('e', e)
}
// 调起微信小程序
sweixin ? sweixin.launchMiniProgram(options) : plus.nativeUI.alert('当前环境不支持微信操作!');
}
app端(安卓createWXAPI代码):
public IWXAPI createWXAPI() {
Log.e(LOG_TAG,"createWXAPI");
String wx_appid = AndroidResources.getMetaValue("WX_APPID");
Log.e(LOG_TAG, "createWXAPI --> wx_appid: " + wx_appid);
// 通过WXAPIFactory工厂,获取IWXAPI的实例
IWXAPI iwxapi = WXAPIFactory.createWXAPI(this, wx_appid, true);
Log.e(LOG_TAG, "createWXAPI --> createWXAPIcreateWXAPI");
Log.e(LOG_TAG, "createWXAPI --> createWXAPIcreateWXAPI: " + wx_appid);
// iwxapi.handleIntent(this.getIntent(), this);
iwxapi.registerApp(wx_appid);
// 将应用的appId注册到微信
// 建议动态监听微信启动广播进行注册到微信
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.e(LOG_TAG, "createWXAPI --> registerReceiver: " + wx_appid);
// 将该app注册到微信
iwxapi.registerApp(wx_appid);
}
}, new IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP));
return iwxapi;
}
报错现象,调用安卓原生方法,启动监听的时候,WXAPIFactory.createWXAPI(this, wx_appid, true)方法报错:
NativeObject.execMethod createWXAPI method ; params=[]java.lang.reflect.InvocationTargetException
小程序回调app代码如下:(可顺利执行launchapp方法,但安卓离线打包,小程序无法调起app)
小程序端::
<button open-type="launchApp" app-parameter="wechat" @launchapp="launchapp"
@error="launchAppError">打开APP</button>
methods: {
launchapp(e) {
console.log('launchapp', e)
},
launchAppError(error) {
console.log('launchAppError', error)
}
2***@qq.com (作者)
你好。分享到微信的功能是可以的。但打开小程序后,小程序不能回调到app
2021-12-28 11:51
DCloud_Android_zl
回复 2***@qq.com: 稍等,我先排查一下
2021-12-28 16:16
DCloud_Android_zl
回复 DCloud_Android_zl: 重新测试了一下,包名及微信配置都正确的情况下,WXEntryActivity在Androidmanifest.xml中注册时,需要设置android:exported为true
2021-12-28 16:56
2***@qq.com (作者)
回复 DCloud_Android_zl: 你好,可以提供离线打包的可打开小程序并且能回调app的demo吗?
2021-12-28 21:39
DCloud_Android_zl
回复 2***@qq.com: 这个是个人项目,目前不方便提供,你可以参考上面发的方法试一下
2021-12-29 15:20
2***@qq.com (作者)
回复 DCloud_Android_zl: 那能提供下WXEntryActivity文件吗。。android:exported设置过了。小程序有触发launchapp事件,但app无法调起
2021-12-30 15:03
DCloud_Android_zl
回复 2***@qq.com: WXEntryActivity就是离线打包示例里面的,如果还不行,工程可以私信给我,我看一下
2021-12-31 11:31