Google Playまたは他の市場からアプリケーションがインストールされていることを検出する必要がありますが、この情報を取得するにはどうすればよいですか?
PackageManager
クラスは、指定したパッケージをインストールしたもののパッケージ名を通知する getInstallerPackageName メソッドを提供します。サイドロードアプリには値が含まれません。
[〜#〜] edit [〜#〜]:注意してください@mttmllns ' 以下の回答 Amazonアプリストアに関して。
そしてFYI 明らかに Amazonストアの最新バージョンは最終的に PackageManager.getInstallerPackageName()
に"com.Amazon.venezia"
また、Google Playの"com.Android.vending"
。
このコードを使用して、ビルドがストアからダウンロードされたか、サイドロードされたかを確認します。
public static boolean isStoreVersion(Context context) {
boolean result = false;
try {
String installer = context.getPackageManager()
.getInstallerPackageName(context.getPackageName());
result = !TextUtils.isEmpty(installer);
} catch (Throwable e) {
}
return result;
}
コトリン:
fun isStoreVersion(context: Context) =
try {
context.packageManager
.getInstallerPackageName(context.packageName)
.isEmpty()
} catch (e: Throwable) {
false
}
サイドロードアプリの特定と制限を検討している場合。 Googleは、問題を特定するためのソリューションを考案しました。
以下のようにフォローできます
プロジェクトのbuild.gradle
:
buildscript {
dependencies {
classpath 'com.Android.tools.build:bundletool:0.9.0'
}
}
Appモジュールのbuild.gradle
:
implementation 'com.google.Android.play:core:1.6.1'
Applicationを拡張するクラス:
public void onCreate() {
if (MissingSplitsManagerFactory.create(this).disableAppIfMissingRequiredSplits()) {
// Skip app initialization.
return;
}
super.onCreate();
.....
}
この統合により、Googleは、不足している分割apkがあるかどうかを自動的に識別し、「Installation failed」というポップアップを表示し、PlayストアのダウンロードにもリダイレクトしますユーザーがGoogle Playストア経由でアプリを適切にインストールできる画面。
詳細は link をご覧ください。
お役に立てれば。