判断应用是否安装-填坑

public static boolean checkAppInstall(Context context, String packageName) {
	final PackageManager packageManager = context.getPackageManager();
	List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
	if (packageInfos != null) {
		for (PackageInfo info : packageInfos) {
			if (info.packageName.equals(packageName)) {
				return true;
			}
		}
	}
	return false;
}


public static boolean appInstalledOrNot(Context context, String uri) {
    PackageManager pm = context.getPackageManager();
    List<PackageInfo> packageInfoList = pm.getInstalledPackages(PackageManager.GET_ACTIVITIES);
    if (packageInfoList != null) {
        for (PackageInfo packageInfo : packageInfoList) {
            String packageName = packageInfo.packageName;
            if (packageName != null && packageName.equals(uri)) {
                return true;
            }
        }
    }
    return false;
}


获取所有已安装的程序:

public List<ApplicationInfo> getInstalledApplicationsList(PackageManager pm) {
	List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
	return packages;
}



待验证的写法:

final PackageManager pm = getActivity().getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> apps = pm.queryIntentActivities(intent, PackageManager.GET_META_DATA);

PackageManager pm = getPackageManager();
List<PackageInfo> installedPackages = pm.getInstalledPackages(PackageManager.GET_META_DATA);


下面是存在兼容性的写法:

java.lang.RuntimeException: Package manager has died

public static boolean isAppInstalled(Context context, String uri) {
	PackageManager pm = context.getPackageManager();
	boolean installed = false;
	try {
		pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
		installed = true;
	} catch (PackageManager.NameNotFoundException e) {
		installed = false;
	}
	return installed;
}

public static boolean isAppInstalled(Context context, String packageName) {
	try {
		context.getPackageManager().getApplicationInfo(packageName, 0);
		return true;
	} catch (PackageManager.NameNotFoundException e) {
		return false;
	}
}


参考资料:

http://www.jianshu.com/p/2a1d052b8139

http://www.lai18.com/content/9484639.html

http://blog.csdn.net/u013067184/article/details/49358565

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值