AndroidデバイスにGoogle Playストアがインストールされているかどうかを確認できません 質問する

AndroidデバイスにGoogle Playストアがインストールされているかどうかを確認できません 質問する

これは、デバイスにインストールされているパッケージを確認するだけの簡単な作業でした... OS を 2.3.5 にアップグレードする前は、次のコードを使用して Market/Play ストアを見つけることができました。

private static final String GooglePlayStorePackageName = "com.google.market";

void someMethod() {
    packageManager = getApplication().getPackageManager();
    List<PackageInfo> packages = packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
    for (PackageInfo packageInfo : packages) {
        if (packageInfo.packageName.equals(GooglePlayStorePackageName)) {
            googlePlayStoreInstalled = true;
            break;
        }
    }
}

何らかの理由で、アップデート後、アプリケーションがデバイス上にあり、マーケットにアクセスできるにもかかわらず、アプリケーションがインストールされていることを示すパッケージ名が見つかりません。

パッケージ名は変更されましたか? それとも私が間違った見方をしているのでしょうか?

ありがとう、

アダム。

アップデート:

これはパッケージがインストールされているかどうかを確認する愚かな方法でした...より良い方法は次のとおりです。

protected final boolean isPackageInstalled(String packageName) {
    try {
        application.getPackageManager().getPackageInfo(packageName, 0);
    } catch (NameNotFoundException e) {
        return false;
    }
    return true;
}

ベストアンサー1

このほぼ 5 年前のコードは最適ではなく、Google は正当な理由なくインストール済みのすべてのパッケージをチェックすることを好みません。他の回答も確認してください。

パッケージ名が変更され、com.android.vendingになりました。


試す:

private static final String GooglePlayStorePackageNameOld = "com.google.market";
private static final String GooglePlayStorePackageNameNew = "com.android.vending";

void someMethod() {
    PackageManager packageManager = getApplication().getPackageManager();
    List<PackageInfo> packages = packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
    for (PackageInfo packageInfo : packages) {
        if (packageInfo.packageName.equals(GooglePlayStorePackageNameOld) ||
            packageInfo.packageName.equals(GooglePlayStorePackageNameNew)) {
            googlePlayStoreInstalled = true;
            break;
        }
    }
}

おすすめ記事