在app中打开第三方应用

app中如何调起第三方应用,html5plus中已经为我们提供好了调用第三方程序,关于其如何使用,文档上写的也比较明白,但是如果你是第一次使用,通过第三方应用的包描述信息来调用第三方,仅仅是包描述信息你就无从得知。

launchApplication

调用第三方程序

1
void plus.runtime.launchApplication( appInf, errorCB );

说明:

调用第三方程序

参数:

  • appInf (ApplicationInf) 可选 要启动第三方程序的描述信息
  • errorCB (LaunchErrorCallback) 可选 启动第三方程序失败时回调,并返回失败信息。

返回值:

平台支持:

Android : 2.2+

​ 支持

iOS : 4.3+

​ 支持

WP : 7.5+

​ 暂不支持

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Runtiem Example</title>
<script type="text/javascript">
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener( "plusready", onPlusReady, false );
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady() {

}
// 调用第三方程序
function launchApp() {
if ( plus.os.name == "Android" ) {
plus.runtime.launchApplication( {pname:"com.android.browser"
,extra:{url:"http://www.diandian100.cn"}}, function ( e ) {
alert( "Open system default browser failed: " + e.message );
} );
} else if ( plus.os.name == "iOS" ) {
plus.runtime.launchApplication( {action:"http://www.diandian100.cn"}, function ( e ) {
alert( "Open system default browser failed: " + e.message );
} );
}
}
</script>
</head>
<body>
调用第三方程序
<br/>
<button onclick="launchApp()">Launch Application</button>
</body>
</html>

第三方程序描述信息

上方在安卓中执行的一段代码我这里拿出来说下:

1
2
3
4
{
pname:"com.android.browser",
extra:{url:"https://www.diandian100.cn"}
}

从字面上我们大概能看出来,pname即第三方包名称,这里代表的是默认浏览器,extra代表的是我们要打开浏览器访问该网址。

  • pname:DOMString,仅Android平台支持,表示程序的包名,其它平台忽略此属性值。
  • action:DOMString,Android平台上与系统的action值一致;iOS平台为要调用程序的URLScheme格式字符串。
  • extra:JSON,仅Android平台支持,为JSON格式,用于传递给要调用程序的参数,如extra:{url:"https://www.diandian100.cn"}

获取pname

安装adb

我们这里直接使用adb,我这里使用的是Mac,首先确认是否有adb命令,没有的话先安装Android Studio,详细安装说明参考Mac系统安装AndroidStudio

安装好确认下是否可以使用,我这里能打印版本说明已安装好

1
2
3
4
Tony-iMac:~ tony$ adb version
Android Debug Bridge version 1.0.41
Version 30.0.5-6877874
Installed as /Users/tony/Library/Android/sdk/platform-tools/adb
打开终端进入家目录
1
2
3
Tony-iMac:docker_lnmp tony$ cd ~
Tony-iMac:~ tony$ pwd
/Users/tony
打开.bash_profile
1
Tony-iMac:~ tony$ vim .bash_profile 

在最后添加以下内容

1
2
3
export ANDROID_HOME=/Users/tony/Library/Android/sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools

保存文件

1
:wq!
使其生效
1
Tony-iMac:~ tony$ source .bash_profile
读取包名

将手机使用数据线连上电脑,然后打开终端使用命令

1
Tony-iMac:~ tony$ adb shell pm list packages > text.txt

以上命令为查看自己安装的app包名,并写入到text.txt文件中,随后你打开该文件,找到自己app包名即可。

IOS打开第三方应用

IOS中使用URLScheme,这里列出一些常用的URLScheme:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
'alipay': {
name: '支付宝',
pname: 'com.eg.android.AlipayGphone',
scheme: 'alipay://'
},
'taobao': {
name: '淘宝',
pname: 'com.taobao.taobao',
scheme: 'taobao://'
},
'qq': {
name: 'QQ',
pname: 'com.tencent.mobileqq',
scheme: 'mqq://'
},
'wechat': {
name: '微信',
pname: 'com.tencent.mm',
scheme: 'weixin://'
},
'jingdong': {
name: '京东',
pname: 'com.jingdong.app.mall',
scheme: 'openApp.jdMobile://'
},
'pinduoduo': {
name: '拼多多',
pname: 'com.xunmeng.pinduoduo',
scheme: 'pinduoduo://'
},
'weibo': {
name: '新浪微博',
pname: 'com.sina.weibo',
scheme: 'sinaweibo://'
},
'youku':{
name: '优酷',
pname: 'com.youku.phone',
scheme: 'youku://'
}

打开第三方应用的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
launchApp(app) {
let _this = this;
// 判断平台
if (plus.os.name == 'Android') {
plus.runtime.launchApplication({
pname: _this.schemes[app].pname,
},
function(e) {
console.log('应用打开失败: ' + e.message);
}
);
} else if (plus.os.name == 'iOS') {
plus.runtime.launchApplication({
action: _this.schemes[app].scheme
}, function(e) {
console.log('应用打开失败: ' + e.message);
});
}

}