以下是打开一个原生app界面并将参数传递过去的代码,这个功能已经实现:
let payParam = _this.getPayTypePar();
let orderNo = (new Date()).getTime().toString();
let Intent = plus.android.importClass("android.content.Intent");
let intent = new Intent(Intent.ACTION_VIEW);
let ComponentName = plus.android.importClass("android.content.ComponentName");
let comp = new ComponentName("com.newland.caishen", "com.newland.caishen.ui.activity.MainActivity");
intent.setComponent(comp);
intent.setAction("android.intent.action.MAIN");
intent.putExtra("msg_tp", "0200");
intent.putExtra("pay_tp", payParam.pay_tp);
intent.putExtra("proc_tp", "00");
intent.putExtra("proc_cd", payParam.proc_cd);
intent.putExtra("amt", fee);
intent.putExtra("order_no", orderNo);
intent.putExtra("appid", "cn.gzphsw.sellcoupon"); // 包名
intent.putExtra("time_stamp", orderNo);
intent.putExtra("print_info", "维达纸巾1");
let main = plus.android.runtimeMainActivity();
main.startActivity(intent);
下面是接受原生app返回参数的代码:
onShow() {
let Intent = plus.android.importClass("android.content.Intent");
let mainActivity = plus.android.runtimeMainActivity();
intent = mainActivity.getIntent(); //获取启动intent
console.log(JSON.stringify(intent));
let msg_tp = intent.getStringExtra("msg_tp"); //通过intent获取参数
//this.getPayResult();
}
原生代码如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Bundle bundle = data.getExtras();
if (requestCode == 1&&bundle != null) {
switch (resultCode) {
// 支付成功
case Activity.RESULT_OK:
String msgTp = bundle.getString("msg_tp");
if (TextUtils.equals(msgTp, "0210")) {
// TODO:
}
break;
// 支付取消
case Activity.RESULT_CANCELED:
String reason = bundle.getString("reason");
if (reason != null) {
// TODO:
}
break;
default:
// TODO:
break;
}
}
}
现在的情况是:传递参数给原生app能成功,接受原生app的参数为空,请问有没有遇到过类型情况的或者有解决思路的,谢谢各位!
DCloud_Android_zl
Android中传值回传需要使用startactivityforresult打开指定activity,同时重写onActivityResult接受值得回传。参考:https://www.cnblogs.com/wangjiaxiaoxi/p/6828052.html
2019-03-05 19:34
[已删除] (作者)
回复 DCloud_Android_zl:感谢解答,不过我是想用uni-app接受原生安卓app返回的数据,并不是用原生的
2019-03-06 11:19
龙小川
回复 [已删除]: 他的这个其实可以解决你的问题。你的跳转到原生是没问题的。那么你要获取原生返回uni页面的数据,只需要Intent i = new Intent(你自己写的原生的activity.this, PandoraEntry.class);i.putExtra("result", result);startActivity(i);,这个时候就可以返回到uni页面。在onShow里按你那个获取
2020-01-11 18:53
1***@qq.com
回复 龙小川: PandoraEntry.class这个东西不生效
2020-11-04 19:52