I know this is probably a longshot, but is there any way to detect programatically whether an app was hosted on the Amazon apps store vs on Google Play? I would like to link to the app store the app was downloaded from, and I'd rather not have two different APKs with just this difference if it can be avoided.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
As of just recently, the Amazon Appstore returns sane values for PackageManager.getInstallerPackageName()
PackageManager pm = context.getPackageManager();
String installerPackageName = pm.getInstallerPackageName(context.getPackageName());
if ("com.android.vending".equals(installerPackageName)) {
//do google things
} else if ("com.amazon.venezia".equals(installerPackageName)) {
//do amazon things
}
See here: https://forums.developer.amazon.com/forums/thread.jspa?threadID=680
Examples for rate this app links:
Google Play-
market://details?id=PACKAGANAME
Amazon Store
http://www.amazon.com/gp/mas/dl/android?p=PACKAGENAME
or
amzn://apps/android?p=com.amazon.mp3
回答2:
The easiest way is to use different version codes or names between Amazon and Google Play. Then you can use PackageManager.getPackageInfo to retrieve those values and choose the app store link appropriately from there.
Example: suffix all of your Amazon version names with '.65' i.e., 1.0.65. Then use
public boolean isAmazon(Context context) {
String versionName = "";
try {
versionName = context.getPackageManager().getPackageInfo(
getPackageName(), 0).versionName;
} catch (NameNotFoundException e) {
// Can't find itself...
}
return versionName.endsWith(".65");
}