samsungはPackageManager.getInstallerPackageName()を実装していないため、nullを返します。したがって、PackageManager.getInstalledPackages()を使用してすべてのパッケージを取得し、samsungappパッケージ名「com.sec.android.app.samsungapps」を検索します。
店舗:
null - developer
com.android.vending - google play
com.amazon.venezia - amazon app
com.sec.android.app.samsungapps - samsung app store
コード:
// lets start with google play store link
String link = "https://play.google.com/store/apps/details?id=com.hellothupten.capital2countryquiz";
//find out the installer for your app package name.
String installer = getPackageManager().getInstallerPackageName(
"com.hellothupten.capital2countryquiz");
if (installer == null) {
List<PackageInfo> installedPackages = getPackageManager()
.getInstalledPackages(PackageManager.GET_ACTIVITIES);
for (PackageInfo p : installedPackages) {
if (p.packageName.contains("samsungapps")) {
// change to samsung app store link
link = "http://apps.samsung.com/mars/topApps/topAppsDetail.as?productId=000000840239";
break;
}
}
} else if (installer.contains("amazon")) {
// change to amazon app store link
link = "amzn://apps/android?p=com.hellothupten.capital2countryquiz";
} else if (installer.contains("samsung")) {
// change to samsung app store link. This does not
// exist..but who knows samsung may implement
// getInstallerPackageName in future, I assume it will
// contain a word samsung in its package name.
link = "http://apps.samsung.com/mars/topApps/topAppsDetail.as?productId=000000840239";
}
リンク変数をストアリンクとして使用します。
アップデート:
samsungapps://ProductDetail/com.sec.chaton
サムスン:http ://developer.samsung.com/android/technical-docs/Samsung-Apps-Deeplink-Guide