ほとんどの場合、あなたはこれと同様のチェックを含むことにより、店舗名を取得することができますが:
final PackageManager packageManager = getPackageManager();
try {
final ApplicationInfo applicationInfo = packageManager.getApplicationInfo(getPackageName(), 0);
if ("com.android.vending".equals(packageManager.getInstallerPackageName(applicationInfo.packageName))) {
// App was installed by Play Store
} else if ("com.amazon.venezia".equals(packageManager.getInstallerPackageName(applicationInfo.packageName))) {
// App was installed by Amazon Appstore
} else {
// App was installed from somewhere else
}
} catch (final NameNotFoundException e) {
e.printStackTrace();
}
"com.andr oid.vending」Google Playストアやプレイです
『com.amazon.veneziaは』アマゾンのAppStoreであり、それはベータ期間中例えばとして、
は結果がしかし、信頼できない可能性がサイドロードされた
nullが店舗をテストこの値を設定し、ほかには、店舗名として解釈される可能性がインストーラのパッケージ名を指定してアプリをサイドロードすることができますしない場合があります。
adb install -i <INSTALLER_PACKAGE_NAME> <PATH_TO_YOUR_APK>
あなたは、たとえば、異なる店舗ごとに異なるパッケージ名を持つ検討する必要があります
Googleの "com.example.yourapp"とAmazonの "com.example.yourapp.amazon" - あなたは簡単にできるあなたのGradleスクリプトにそれらを設定してください。
それぞれのリリース内で、どこにアップロードされたかを示す変数だけがありますか?または、ユーザとしてOptionPaneを持っていてください... –
'PackageManager'と' getInstallerPackageName() 'は、インストーラの内容を教えてくれます。さまざまなシナリオでどのような結果が得られるかを確認するには、実験を実行する必要があります。 – CommonsWare
あなたが何を思いついたのか実験したら? – ahsteele