首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PackageManager.getInstallerPackageName()能告诉我我的应用是从亚马逊应用商店安装的吗?

PackageManager.getInstallerPackageName()能告诉我我的应用是从亚马逊应用商店安装的吗?
EN

Stack Overflow用户
提问于 2012-11-08 21:24:58
回答 4查看 11.9K关注 0票数 21

我计划在亚马逊应用商店和Google Play上发布我的应用程序,并在我的应用程序中包含一些需要根据应用程序是否从亚马逊应用程序商店安装而稍有不同的行为。如果我正确理解了PackageManager.getInstallerPackageName(String packageName)方法,它会告诉我安装我的应用程序的应用程序的名称。对吗?如果是这样,有谁知道如果我的应用是从亚马逊应用商店安装的,这个方法的返回值是多少?如果不是,有谁知道我可以使用其他方法来确定我的应用程序是否是从亚马逊应用程序商店安装的?

注意:我知道关于堆栈溢出的其他问题已经得到了回答,这些问题提到了使用PackageManager.getInstallerPackageName(String packageName)来确定安装我的应用程序的应用程序的名称。然而,搜索Stack Overflow和其他地方,我还无法确定如果应用程序是从亚马逊应用程序商店安装的,PackageManager.getInstallerPackageName(String packageName)返回的值是多少。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-09 00:41:43

调用PackageManager.getInstallerPackageName(myPackageName),其中myPackageName是程序包的名称(您要确定其安装程序的应用程序的名称)会提供以下值:

如果应用程序是从亚马逊应用程序安装的,则为

  • null。如果应用程序是直接安装在任何应用程序store.
  • com.android.vending之外的,则为
    • null

(感谢@CommonsWare的指针。)

票数 7
EN

Stack Overflow用户

发布于 2014-05-23 05:37:08

由于三星尚未实现PackageManager.getInstallerPackageName(),因此它仍然返回null。因此,使用PackageManager.getInstalledPackages()获取所有包并搜索samsungapp包名称"com.sec.android.app.samsungapps“。

商店:

代码语言:javascript
复制
null - developer
com.android.vending - google play
com.amazon.venezia - amazon app
com.sec.android.app.samsungapps - samsung app store

代码:

代码语言:javascript
复制
// 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";

}

使用链接变量作为存储链接。

更新:

代码语言:javascript
复制
samsungapps://ProductDetail/com.sec.chaton

三星:http://developer.samsung.com/android/technical-docs/Samsung-Apps-Deeplink-Guide

票数 24
EN

Stack Overflow用户

发布于 2013-06-01 01:39:58

好消息!亚马逊商店的最新版本Apparently终于将PackageManager.getInstallerPackageName()设置为"com.amazon.venezia",与谷歌Play的"com.android.vending"形成对比。

旧的应用程序仍然会返回null,我还没有实际验证这个应用程序接口,或者安装新的应用商店,然后升级一个旧的应用程序是否会设置安装程序。但安装新的应用程序并检查/data/system/packages.xml表明installer设置正确。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13289748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档