DCloud_App_Array
DCloud_App_Array
  • 发布:2015-10-19 17:21
  • 更新:2019-08-13 10:41
  • 阅读:39269

Android平台设置UrlSchemes,实现被第三方应用调用

分类:HTML5+

如果你的App想要在手机系统中注册一个scheme协议,方便其他App调用你的App,那么可以根据本文设置。

设置UrlSchemes

打开项目的manifest.json文件,切换到“代码视图”

  • 5+App项目
    在manifest.json文件的"plus"->"distribute"->"google"下添加schemes节点数据如下:
    "plus": {  
    "distribute": {  
        "google": {  
            "schemes": [  
                "test"  
            ],  
            //...  
        },  
        //...  
    },  
    //...  
    },  
    //...  
  • uni-app项目
    把上面的schemes节点数据放到manifest.json的"app-plus"->"distribute"->"android"节点下

值域说明:为字符串数组,每个字符串为一个urlscheme,使用小写字母(不要使用特殊字符、中文),可设置多个。比如设置为test,那么其他App呼起你的app的scheme协议就是test://。

保存后提交App云端打包生效

浏览器中通过href启动应用

安装应用后,我们可以在html页面中,通过href直接调用应用:

<a href="test://abc">test:<a><br/>  

5+ APP中处理urlscheme启动传递的参数

在其它应用中通过href调用Url Scheme传递过来的值,可以通过plus.runtime.arguments获取
其值为完整的urlscheme字符串,如上面href的值启动应用后获取的plus.runtime.arguments值为“test://abc”
代码示例如下:

document.addEventListener('plusready',function(){  
    checkArguments();  
},false);  
// 判断启动方式  
function checkArguments(){  
    console.log("plus.runtime.launcher: "+plus.runtime.launcher);  
    var args= plus.runtime.arguments;  
    if(args){  
        // 处理args参数,如直达到某新页面等  
    }  
}  
// 处理从后台恢复  
document.addEventListener('newintent',function(){  
    console.log("addEventListener: newintent");  
    checkArguments();  
},false);  

uni-app中处理urlscheme启动传递的参数

在App.vue的onShow里可以直接获取

onShow: function() {  
    var args= plus.runtime.arguments;  
    if(args){  
        // 处理args参数,如直达到某新页面等  
    }  
}  

HBuilder/HBuilderX自带真机运行基座的UrlSchemes为"hbuilder://",方便开发者调测。

如果是本地(离线)打包,请自行在原生工程中配置

iOS平台请参考:
iOS平台通过UrlSchemes与第三方应用相互调用

18 关注 分享
五块钱的果汁 TommyJin dreamit1986 Trust 雪之梦技术驿站 火岚 891024617@qq.com 小明子 mingtianfu 漠 dipper echoer 笑着接受一切 hylong 小诺小言 乐子西 306816224@qq.com MedusaSTears@qq.com

要回复文章请先登录注册

天为峰

天为峰

请问,我的5+app应用(Android),想出现在word文件的“其他应用打开”列表中,应该怎么设置这个schemes呢?我试过在plus->distribute->google中设置"schemes" : [ "file", "content" ],,但是一致不生效。我也用了云端打包
2019-08-13 10:41
2350618674@qq.com

2350618674@qq.com

plus.runtime.arguments。能正常唤起,但是获取不到参数。要hide,再打开才会有参数。这是什么原因?
2019-07-24 18:48
290770306@qq.com

290770306@qq.com

回复 1347635797@qq.com:
你设置好了吗 我的H5+APP,设置吊不到应用,求指点
2019-06-18 12:51
290770306@qq.com

290770306@qq.com

设置了还是打不开 什么问题导致的呢
2019-06-18 12:49
1347635797@qq.com

1347635797@qq.com

回复 DCloud_App_Array:
我知道是什么问题了 h5+ 设置 scheme是在plus->distribute->google设置有效,un-app设置scheme在 app-plus->distribute->android 里面有效 ,而文档上只是说吧plus改成app-plus
2019-05-10 13:42
DCloud_App_Array

DCloud_App_Array (作者)

回复 1347635797@qq.com:
提供下appid(manifest.json中的id字段值)
2019-05-10 11:16
1347635797@qq.com

1347635797@qq.com

uni-app中 为什么我设置Schemes后提交云打包,打包好安装到自己的手机上用h5唤起就换不醒(已经排除浏览器问题)
2019-05-10 11:08
xiaohui

xiaohui

回复 1158214125@qq.com:
在全局的onshow()接受 我的是在app.vue文件的onshow()里面接受的
2019-04-11 16:12
xiaohui

xiaohui

回复 1004221428@qq.com:
在全局的方法里处理参数
2019-04-11 16:12
xiaohui

xiaohui

plus.runtime.arguments 用完了咋办,可以清空么
2019-04-11 15:59
有问

有问

这个不好用,有BUG,测试多次,本来用变量按类别区分后正常可以打开不同的链接,结果每次一打开,把所有步骤都执行了,if else条件都没用。。。。
2019-04-11 13:20
张德帅

张德帅

回复 张德帅:
研究了一下,直接写在 onLaunch 里面就好了
2019-04-02 17:54
张德帅

张德帅

确实可以调起,但是uni里面没有document也没有window对象,我应该怎么监听呢?


document.addEventListener('newintent',function(){
console.log("addEventListener: newintent");
checkArguments();
},false);
2019-04-02 17:02
1158214125@qq.com

1158214125@qq.com

app未打开状态可以接收到参数,但是app如果是打开状态,可以打开app但是接收不到参数,怎么回事呀
2019-03-28 11:48
1004221428@qq.com

1004221428@qq.com

跳转成功后怎么清除arguments?// 处理从后台恢复
document.addEventListener('newintent',function(){
console.log("addEventListener: newintent");
checkArguments();
},false); 跳转成功后返回启动页又自动跳转了!
2019-03-11 16:21
DCloud_App_Array

DCloud_App_Array (作者)

回复 windys:
可以自定义
2019-01-21 14:44
windys

windys

schemes是可以随便自己定义的吗请问
2019-01-21 10:47
唉呀妈呀

唉呀妈呀

回复 DCloud_App_Array:
如何联系?
2018-12-24 14:14
DCloud_App_Array

DCloud_App_Array (作者)

回复 唉呀妈呀:
微信屏蔽scheme的,可以尝试联系微信加白名单
2018-12-24 13:11
唉呀妈呀

唉呀妈呀

请问微信端无法打开,有没有办法解决
2018-12-24 11:41
2465395769@qq.com

2465395769@qq.com

回复 zb305107@163.com:
需要怎么PandoraEntryActivity配置呢,还是不太明白,能不能写一下,谢谢
2018-12-18 11:31
niubiqigai

niubiqigai

回复 767011007@qq.com:
{pname:"com.tencent.mm"}跟{action:"weixin://RnUbAwvEilb1rU9g9yBU"}怎么理解?
2018-11-30 16:45
niubiqigai

niubiqigai

回复 TommyJin:
求助。首先你要愿意帮助一个人。我想问一下,“test://abc”中abc是什么?或者有没有一个demo可以给我看看?
2018-11-30 15:53
niubiqigai

niubiqigai

回复 767011007@qq.com:
RnUbAwvEilb1rU9g9yBU这个是啥?
2018-11-30 15:49
niubiqigai

niubiqigai

回复 sanjingye@aliyun.com:
同问
2018-11-30 15:44
niubiqigai

niubiqigai

回复 小明子:
你好,我想问一下,test://abc中的abc是啥?可以给个例子我看看吗?href
2018-11-30 15:43
niubiqigai

niubiqigai

回复 sihaokou@163.com:
你好,我想问一下,“test://abc”中abc是啥?
2018-11-30 15:32
596149381@qq.com

596149381@qq.com

回复 sihaokou@163.com:
你好!是不是配置好schemes,然后另一个APP写个<a href="test://abc">test:<a><br/>就可以了,但我试了不可以,方便请教你吗
2018-11-20 16:20
独木为夕

独木为夕

回复 DCloud_App_Array:
这是打开app的协议吗
2018-11-09 10:41
18274552663@163.com

18274552663@163.com

回复 吴昊:
你这个问题解决了吗?
2018-10-29 11:16
18274552663@163.com

18274552663@163.com

回复 吴昊:
请问,这个问题解决了吗?
2018-10-18 17:13
sihaokou@163.com

sihaokou@163.com

为什么这样的方式能打开APP却传不进去值,没有任何反应
2018-09-11 15:09
DCloud_App_Array

DCloud_App_Array (作者)

回复 1169288323@qq.com:
在微信中打开的网页无法调用其它APP是因为微信屏蔽了,这个只能向微信申请白名单。
2018-05-21 11:29
1169288323@qq.com

1169288323@qq.com

微信启动不了app
2018-05-18 15:49
吴昊

吴昊

回复 zb305107@163.com:
求助。app未运行情况下,在 plusready 中获取不到参数;后台运行时在 newintent 中能获取参数,这是什么原因
2018-05-16 15:47
453783374@qq.com

453783374@qq.com

要什么情况才能放在微信的服务号下面打开?
2017-11-21 09:45
mingtianfu

mingtianfu

好东西啊
2017-11-12 01:00
50399421@qq.com

50399421@qq.com

qq可以唤醒app,但是微信无法唤醒app,如何破
2017-11-08 14:42
1144106538@qq.com

1144106538@qq.com

回复 TommyJin:
请问短信里打开第三方app怎么写呢
2017-10-13 17:18
sanjingye@aliyun.com

sanjingye@aliyun.com

test://abc 里的abc是什么啊?
2017-09-06 17:00
zb305107@163.com

zb305107@163.com

回复 zb305107@163.com:
解决了,参考了 zy枫 的提示,在AndroidManifest.xml中的PandoraEntryActivity里配置。。。文档坑太多啊,一开始直接使用离线打包的,在manifest.json里面配置一直没用,直到试了下云端打包发现居然能用,才考虑到是离线应该在AndroidManifest.xml里配置
2017-08-30 16:01
zb305107@163.com

zb305107@163.com

离线打包怎么配置urlscheme?
2017-08-30 15:49
小明子

小明子

回复 zy枫:
麻烦回复一下我的私信
2017-08-29 17:32
小明子

小明子

我的无法获取参数啊
2017-08-29 15:18
小米稀饭大米粥

小米稀饭大米粥

回复 anihaoseyao:
哥们儿,网页链接打开手机安装完毕的应用实现了吗?如何实现的?
2017-05-17 14:28
anihaoseyao

anihaoseyao

回复 TommyJin:
你好 能不能私信我你的联系方式之一,我想请教下 ,现在卡住了
2017-03-10 16:32
lam

lam

回复 767011007@qq.com:
ios plus.runtime.launchApplication( {action:"weixin://RnUbAwvEilb1rU9g9yBU"})你这种方法能打开吗? action:的值是什么,就是RnUbAwvEilb1rU9g9yBU,如果我是其它app,那填什么
2016-12-27 16:24
lam

lam

回复 770579166@qq.com:
同问,能否给个完整demo
2016-12-27 16:23
770579166@qq.com

770579166@qq.com

回复 zy枫:
具体怎么弄啊?
2016-12-14 13:04
zy枫

zy枫

回复 kaiven:
我是在Mainfeast中的PandoraEntryActivity设置shceme的,其他的和上面说的差不多,从网页启动APP和获取参数都没有问题
2016-12-13 11:21
kaiven

kaiven

离线打包,怎么配置呢?
2016-10-29 22:16
767011007@qq.com

767011007@qq.com

文档里面根本就没有安卓平台用urlSchemes调用第三方程序的例子,写这个出来误导大家的吧?如果真的可以用这种方法,为什么文档里面没介绍?Hello H5里边打开微信的代码也是用的包名打开,为何不直接用urlchemes??function openWeixin() {
if ( plus.os.name == "Android" ) {
plus.runtime.launchApplication( {pname:"com.tencent.mm"}
, function ( e ) {
plus.nativeUI.confirm( "检查到您未安装\"微信\",是否到商城搜索下载?", function(i){
if ( i.index == 0 ) {
androidMarket( "com.tencent.mm" );
}
} );
} );
} else if ( plus.os.name == "iOS" ) {
plus.runtime.launchApplication( {action:"weixin://RnUbAwvEilb1rU9g9yBU"}, function ( e ) {
plus.nativeUI.confirm( "检查到您未安装\"微信\",是否到商城搜索下载?", function(i){
if ( i.index == 0 ) {
iosAppstore( "itunes.apple.com/cn/app/wechat/id414478124?mt=8" );
}
} );
} );
}
2016-10-14 11:31
sliven

sliven

回复 DCloud_App_Array:
你好,请问,提交云端打包后,是不是就直接部署在云端了(因为我本地测试手机没有进行安装,也能够打开使用)
2016-08-16 17:35
保级队球迷

保级队球迷

回复 TommyJin:
请问你的使用场景是什么?我从A app打开了高德地图app导航,它有个返回A app的功能需要设置shceme,我用上面的方法设置打包之后不起作用。我想问下你测试成功的场景和我这个差不多吗?非常感谢
2016-03-31 17:20
TommyJin

TommyJin

回复 DCloud_App_Array:
是的 Android 已经测试成功 很棒 多谢啦
2015-11-10 17:50
DCloud_App_Array

DCloud_App_Array (作者)

回复 TommyJin:
需要提交云端打包后才能生效
2015-11-10 12:56
TommyJin

TommyJin

为什么 我设置的无效啊 感觉没什么卵用
2015-11-09 21:35