H5App唤起其他应用(Android平台)
程序员文章站
2022-03-28 13:48:25
...
前期的一些设置直接用HbuildX进行,参考的链接
Android 平台 HTML5+ SDK的集成(HBuilder离线打包)
里面写的很详细,感谢作者,一步步按照配置来就可以了
被唤起App配置
在AndroidStudio里在AndroidManifest.xml配置信息进行添加
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="android.intent.category.BROWSABLE"></category>
<data
android:host="host"
android:path="/path"
android:scheme="scheme">
</data>
<!--<!–<a href="[scheme]://[host]/[path]?[query]">启动应用程序</a>–>-->
</intent-filter>
注意这两个 调用意图要分开,否则可能创建的app不显示应用图标,其中scheme必须要有。
被唤起的时候可以在path后面加一下自定义的参数,这些参数可以自用,下面有例子
LayaAir里面加调起代码(我用的腊鸭开发)
在index.html里面添加 ,这里在Android上面监听到plusready 后 设置手机常亮,这也是njs插件常用的方法
document.addEventListener("plusready", function () {
plus.device.setWakelock(true);
}, false);
接下来是判断被唤起app是否被安装
var getIntentByPackageName = function (pkgname) {
plus.android.importClass('android.content.pm.PackageManager');
var MainActivity = plus.android.runtimeMainActivity();
var PackageManager = MainActivity.getPackageManager();
return plus.android.invoke(PackageManager, 'getLaunchIntentForPackage', pkgname);
}
var isInstalledApp = function (pkgname) {
return getIntentByPackageName(pkgname) != null;
}
举例
let exit = Laya.Browser.window.isInstalledApp("com.xxxxx.xxxxx")//true代表安装了应用
alert("exit=" + exit);
应用调起
var openApp = function (url,callBack,packageName) {
errorCB=callBack
identity=packageName
plus.runtime.openURL( url, errorCB, identity );
}
举例
Laya.Browser.window.openApp("scheme://host/path?name=zidingyicanshu1&zidingyicanshu2=26", () => {
alert("哈哈哈哈,调起失败");
}, "com.xxxxx.xxxxx")
}//?后面可以加自定义参数
HBuilder 去掉启动时候的app名字和灰色界面------设置好应用的splash为自己的图片
附上参考链接
Android平台本地(离线)打包指南 - Android Studio
Android平台设置UrlSchemes,实现被第三方应用调用
web-launch-app
HTML 5+ SDK 更新日志
官方例子