1

我才知道,Android Play Store不仅是我们可以部署APK文件的地方,而且还有不少.

现在我计划在以下位置部署我的 APK:

  1) Amazon AppStore
  2) Opera Mobile Store
  3) Samsung Apps Store
  4) NokiaX.
  5) Android Play Store (Already deployed, also tracking)

现在的问题是如何知道我的应用程序的安装来源?

我想看看,如果应用程序是从Android Play StoreAmazon AppstoreOpera Mobile Store等安装的Samsung Apps store......

以下链接可能有助于安装亚马逊应用程序:

安卓安装源

任何帮助表示赞赏。

4

3 回答 3

0

假设您使用 Gradle,您可以为每个商店使用不同的产品风味。您可以为每种风味创建一个资源文件,然后在运行时读取该资源的值以了解您正在运行的风味。每种风格只需要一个额外的资源 XML 文件,并在 build.gradle 中定义这些风格。在这些修改之后构建您的应用程序将导致每个商店有 1 个 APK,除了那个资源值之外,这些 APK 是相同的。

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Product-flavors

像这样...将这些添加到您的 build.gradle 中:

   android {
       productFlavors {
        amazon {}
        opera {}
        samsung {}
        nokiax {}
        google {}
       }
   }

您为每个风味 app/src/FLAVOR/res/values/store.xml 添加一个资源文件(例如 app/src/nokiax/res/values/store.xml)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="store_identifier">nokiax</string>
</resources>

现在,当您读取资源“store_identifier”的值时,您可以检测到您正在运行哪种风味,从而推断出它是从哪个商店安装的。您可能希望使用整数资源而不是字符串。

通过这些修改构建应用程序将生成 5 个 APK 文件(例如 app_nokiax_release.apk、app_google_release.apk ...),您可以将每个文件部署到各自的商店

于 2014-05-22T18:30:18.333 回答
0

没有用于此的 API。您无法知道 apk 是侧载的还是从商店安装的。不是 100% 确定某些商店是否有某种客户端数据库,但并非所有商店都拥有它。

于 2014-05-15T10:59:03.063 回答
0

您可以使用InstallSourceInfo检查 API 级别 30 及更高级别的安装源

    val sourceInfo = applicationContext.packageManager.getInstallSourceInfo(applicationContext.packageName)
    val installSourcePackageName = sourceInfo.initiatingPackageName
于 2021-06-29T06:19:31.477 回答