前言

简单记录一下通过包名判断应用是否存在,记录于此,方便自己查阅。

正文

方式1

public boolean packageExists(Context context, String packageName) {
    if (!TextUtils.isEmpty(packageName)) {
        PackageManager packageManager = context.getPackageManager();
        try {
            packageManager.getApplicationInfo(packageName, PackageManager.GE
            return true;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
    }
    return false;
}

如果存在,不会异常,如果不存在,就会异常。

packageExists(this, "com.biumall.browser");
packageExists(this, "com.biumall.x");

由于com.biumall.x不存在,所以运行时会出现异常,打印如下。

android.content.pm.PackageManager$NameNotFoundException: com.biumall.x
    at android.app.ApplicationPackageManager.getApplicationInfoAsUser(ApplicationPackageManager.java:395)
    at android.app.ApplicationPackageManager.getApplicationInfo(ApplicationPackageManager.java:377)
    at com.biumall.demo.BossActivity.packageExists(BossActivity.java:67)

方式2

public boolean packageExists2(Context context, String packageName) {
    Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
    return null != intent;
}

查看是否可以获取到Intent,其实跟方法一类似。

参考文章

  1. Android通过包名判断应用是否存在

相关文章

1 条评论

  • 11111
    11111 投稿者

    啊啊啊

    回复