[已删除]
[已删除]
  • 发布:2019-03-05 17:11
  • 更新:2020-05-21 10:39
  • 阅读:4345

请教一个关于uni-app与原生app数据交互的问题,无法接受到原生app返回的参数

分类:uni-app

以下是打开一个原生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的参数为空,请问有没有遇到过类型情况的或者有解决思路的,谢谢各位!

2019-03-05 17:11 负责人:无 分享
已邀请:
[已删除]

[已删除] (作者)

各位大佬有没有知道的?

  • 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

MonkeyDLuffy

MonkeyDLuffy

请问这个问题解决了吗

  • 1***@qq.com

    您好 你解决了吗?

    2019-07-24 10:04

1***@qq.com

1***@qq.com - 90后IT

您好 你解决了吗?

8***@qq.com

8***@qq.com - 噓噓乖乖

请问怎么接收安卓原生通过abc://pages/index/index?APP_ID=1001&WORK_ID=ceshi&PAGE_CODE=2 这个方式, 跳转到 uniapp 云打包 安卓上 的 参数 (APP_ID、WORK_ID、PAGE_CODE)

大帅锅

大帅锅

你好,请问你是怎么处理的?就是原生Android页面返回到uniapp加载的页面的时候,uniapp上面要获取回传来的数据。这个流程是怎么弄得。可以给个demo吗?谢谢

Sanky

Sanky

同问 楼主解决了吗?

machi的奶茶

machi的奶茶 - 披风前行

所以大家后来都是怎么解决的呢?可以分享下吗

  • machi的奶茶

    终结回复 -- 见官方文档:https://nativesupport.dcloud.net.cn/UniMPDocs/Sample/event

    2020-05-24 17:06

1***@qq.com

1***@qq.com

有解决的案例吗

该问题目前已经被锁定, 无法添加新回复