これは、デバイスにインストールされているパッケージを確認するだけの簡単な作業でした... 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;
}
}
}