如何知道设备上是否安装了特定应用程序?

Gan*_*ake 0 android

我想检查设备上是否安装了应用程序。我正在使用下面的代码:

PackageManager pm = context.getPackageManager();
        List<PackageInfo> packageInfoList = pm.getInstalledPackages(PackageManager.GET_ACTIVITIES);
        if (packageInfoList != null) {
            for (PackageInfo packageInfo : packageInfoList) {
                Log.d(TAG, "-->"+packageInfo.packageName);
                String packageName = packageInfo.packageName;
                if (packageName != null && packageName.equals(uri)) {
                    return true;
                }
            }
        }
        return false;
Run Code Online (Sandbox Code Playgroud)

这给了我所有的包裹,但没有给我除外的包裹。我正在尝试找到这个应用程序:rootcloak 和暴露的安装程序无法使用上面的代码找到这些应用程序。

Ron*_*kar 5

使用下面的代码:

public boolean isAppInstalled(String package_name, String app_name)
{
    try {
        PackageManager pm = getPackageManager();
        PackageInfo info = pm.getPackageInfo("" + package_name, PackageManager.GET_META_DATA);
        return true;

    }
    catch (PackageManager.NameNotFoundException e) {
        Toast.makeText(getApplicationContext(), "Your device has not installed " + app_name, Toast.LENGTH_SHORT)
                .show();
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

调用该方法如下:

isAppInstalled("com.whatsapp", "Whatsapp"); // it will return true if your device is having whatsApp.

isAppInstalled("com.randomname", "anyname"); //it will return false
Run Code Online (Sandbox Code Playgroud)