Вопрос

I have app in Google Play, Amazon, Samsung Apps and I plan to upload to other stores. I do not wish to compile separate build for every store. Is there way to detect what store installed app if same app submitted to different stores?

Это было полезно?

Решение

You'll have to expand this for each additional store, but this should get you started

if (context.getPackageManager().getInstallerPackageName(context.getPackageName()).equals("com.android.vending")
{
//do google things
}
else if (context.getPackageManager().getInstallerPackageName(context.getPackageName()).equals("com.amazon.venezia")
{
//do amazon things
}

Другие советы

I detect Installer like this inside the MainActivity:

//is installed via amazon, google?
String installerId = null;
try {
    installerId = this.getPackageManager().getInstallerPackageName(this.getPackageName());
} catch (Exception e) {
    //just in case...
}

if ("com.amazon.venezia".equals(installerId)) {
    // amazon 
} else if ("com.android.vending".equals(installerId)) {
    // google
} else {
    // others & unknown ones
}

I have tested this in my last app and it passed app submission in googe play, amazon store and slideme.org store

Update: looks like sometimes there is the installer package name com.google.android.feedback which seems to be related to google store as well, although I have seen in my test app's google analytics that com.android.vending is by far more frequent. So if you want to make this even more precise you should handle this installer package as well. Also note that some markets (like slideme.org) simply don't seem to set a package installer id at all.

See also: Can PackageManager.getInstallerPackageName() tell me that my app was installed from Amazon app store?

Not unless you make seperate builds. But with a good maven setup/ant script you could easely automate this process.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top