Android应用程序如何检测安装它的商店?

问题描述 投票:0回答:4

我在 Google Play、Amazon、Samsung Apps 中有应用程序,我计划上传到其他商店。 我不想为每个商店编译单独的版本。 如果同一个应用程序提交到不同的商店,是否有办法检测哪个商店安装了应用程序?

android google-play samsung-mobile amazon-appstore
4个回答
16
投票

您必须为每个额外的商店扩展此功能,但这应该可以帮助您开始

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
}

11
投票

我在 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
}

我在我的上一个应用程序中对此进行了测试,它通过了 googe play、amazon store 和 slipme.org store 中的应用程序提交

更新:看起来有时会有安装程序包名称com.google.android.feedback,它似乎也与谷歌商店相关,尽管我在我的测试应用程序的谷歌分析中看到了com.android。迄今为止,自动售货更加频繁。因此,如果您想让其更加精确,您也应该处理此安装程序包。 另请注意,某些市场(例如 Slideme.org)似乎根本没有设置软件包安装程序 ID。

另请参阅:PackageManager.getInstallerPackageName() 可以告诉我我的应用程序是从 Amazon 应用商店安装的吗?


3
投票

除非您进行单独的构建,否则不会。但通过良好的 Maven 设置/ant 脚本,您可以轻松地自动化此过程。


0
投票

希望有帮助

fun handleAppStoreSpecificLogic(context: Context) {
    val packageManager = context.packageManager
    val installerPackageName = packageManager.getInstallerPackageName(context.packageName)

    when (installerPackageName) {
        "com.android.vending" -> {
            // Google Play Store
            doGooglePlayStoreThings()
        }
        "com.amazon.venezia" -> {
            // Amazon Appstore
            doAmazonAppstoreThings()
        }
        "com.sec.android.app.samsungapps" -> {
            // Samsung Galaxy Store
            doSamsungGalaxyStoreThings()
        }
        "com.huawei.appmarket" -> {
            // Huawei AppGallery
            doHuaweiAppGalleryThings()
        }
        "com.xiaomi.mipicks" -> {
            // Xiaomi Mi GetApps
            doXiaomiMiGetAppsThings()
        }
        "com.oppo.market" -> {
            // OPPO App Market
            doOppoAppMarketThings()
        }
        "com.vivo.appstore" -> {
            // VIVO App Store
            doVivoAppStoreThings()
        }
        "com.hihonor.appmarket" -> {
            // Honor App Market
            doHonorAppMarketThings()
        }
        else -> {
            // Unknown or direct installation
            doDefaultThings()
        }
    }
}

fun doGooglePlayStoreThings() {
    // Implement Google Play Store specific logic here
}

fun doAmazonAppstoreThings() {
    // Implement Amazon Appstore specific logic here
}

fun doSamsungGalaxyStoreThings() {
    // Implement Samsung Galaxy Store specific logic here
}

fun doHuaweiAppGalleryThings() {
    // Implement Huawei AppGallery specific logic here
}

fun doXiaomiMiGetAppsThings() {
    // Implement Xiaomi Mi GetApps specific logic here
}

fun doOppoAppMarketThings() {
    // Implement OPPO App Market specific logic here
}

fun doVivoAppStoreThings() {
    // Implement VIVO App Store specific logic here
}

fun doHonorAppMarketThings() {
    // Implement Honor App Market specific logic here
}

fun doDefaultThings() {
    // Implement default logic for unknown or direct installations
}
© www.soinside.com 2019 - 2024. All rights reserved.