uni安卓实现从一个app(A)带参数跳转到另一个app(B)

1. 首先配置B款app的Schemes

路径:manifest.json—>源码视图—>app-plus—>distribute

"distribute" : {
            "android" : {
                "schemes" : [ "jining" ]
              }, 
         }

2.实现A款app跳转B款app

  

 if (plus.os.name == "Android") {
            //安卓
            console.log("安卓");
            if (
              plus.runtime.isApplicationExist({
                //查看安卓系统手机有没有下载这款app
                pname: "com.yl.jining", //B款app云打包的包名
              })
            ) {
              //安装了app
              console.log("安装了");
              plus.runtime.launchApplication({
                //打开app
                pname: "com.yl.jining", //B款app云打包的包名
                extra: {
                   //跳转携带的参数需要拼接在url后面
                  url: `jining://com.yl.jining?token=${token}`,
                //url B款app配置的schemes+云打包的包名
                 //跳转携带的参数也可在下面直接添加,如下例子token:token
                 token: token,                 },
                function(e) {
                  console.log(
                    "Open system default browser failed: " + e.message
                  );
                },
              });
            } else {
              //未安装app需要下载路径
              console.log("未安装");

              plus.runtime.openURL('https://a.app.qq.com/o/simple.jsp?pkgname=xxxx', function(res) {
              // //进入后台小哥哥给我的应用宝下载链接,让你们后台给你
              // //这链接会判断你手机是ios还是Android,Android进入应用宝下载app
              // //跟下面的是一个链接
              //    console.log(res);
              });
            }
          }

3.B款App接收参数

 B款 App.vue文件需要如下操作

 // 在App.vue需要添加如下代码
onLaunch() {
    //#ifdef APP-PLUS
    this.checkArguments() // 检测启动参数
    // 重点是以下: 一定要监听后台恢复 !一定要
    plus.globalEvent.addEventListener('newintent', (e) => {
      this.checkArguments() // 检测启动参数
    })
  },

在methods里面添加此方法(可根据实际情况进行相应调整)

若想查看接收的参数,uni可选择uni.showModal类似方式查看

checkArguments() {
      console.log('Shortcut-plus.runtime.launcher: ' + plus.runtime.launcher)
      // 通过快捷方式启动,iOS平台表示通过3D Touch快捷方式,Android平台表示通过桌面快捷方式启动
      try {
        var cmdString = plus.runtime.arguments
        var cmd = JSON.parse(cmdString)
// 直接携带参数的处理
        if (cmd.token) {
          this.getUserInfo(cmd.token)
        } else {
// 通过url携带参数的处理
          if (cmd.url && cmd.url.split('?')) {
            let params = {}
            let arr = cmd.url.split('?')[1].split('&') || []
            for (let i = 0; i < arr.length; i++) {
              params[arr[i].split('=')[0]] = arr[i].split('=')[1]
            }
            params.token && this.getUserInfo(params.token)
          }
        }
      } catch (e) {
        console.log('Shortcut-exception: ' + e)
      }
      // }
    },

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值