android js 安装apk,判断手机已安装某APP的方法(Android,Native.js)

原生实现

private boolean isInstalledApp(Context context, String packageName){

//获取packagemanager

final PackageManager packageManager = context.getPackageManager();

//获取所有已安装程序的包信息

List< packageInfo> pinfo = packageManager.getInstalledPackages(0);

//用于存储所有已安装程序的包名

List pName = new ArrayList();

//从pinfo中将包名字逐一取出,压入pName list中

if(pinfo != null){

for(int i = 0; i < pinfo.size(); i++){

String pn = pinfo.get(i).packageName;

pName.add(pn);

}

}

//判断pName中是否有目标程序的包名,有TRUE,没有FALSE

return pName.contains(packageName);

}

Native.js

var isInstalledApp = function(pkgname) {

plus.android.importClass('java.util.ArrayList');

plus.android.importClass('android.content.pm.PackageInfo');

plus.android.importClass('android.content.pm.PackageManager');

var MainActivity = plus.android.runtimeMainActivity();

var PackageManager = MainActivity.getPackageManager();

var pinfo = plus.android.invoke(PackageManager, 'getInstalledPackages', 0)

if (pinfo != null) {

for (i = 0; i < pinfo.size(); i++) {

//PackageInfo{4b45699f9d com.tencent.mobileqq}

if (pinfo.get(i).toString().indexOf(pkgname) !== -1) {

return true;

}

}

}

return false;

}

## 使用 isInstalledApp('com.tencent.mm')

注意个别手机如华为有权限问题,如果不给权限,无法获取本机应用列表。

方式二:

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;

}

## 使用 isInstalledApp('com.tencent.mm')

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值