我们如何了解APK安装源

时间:2014-05-15 10:47:55

标签: samsung-mobile google-play amazon-appstore opera-mobile nokiax

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

现在我打算在下面部署我的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 StoreSamsung Apps store等安装的,那么......

以下链接可能有助于安装Amazon App:

Android install source

感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

像这样的东西......将它们添加到你的build.gradle:

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

并为每个flavor 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>

现在当你读取资源&#34; store_identifier&#34;的值时您可以检测正在运行的风味,从而推断出安装的商店。您可能希望使用整数资源而不是字符串。

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

答案 2 :(得分:0)

您可以使用 InstallSourceInfo

检查 API 级别 30 及更高级别的安装源
    val sourceInfo = applicationContext.packageManager.getInstallSourceInfo(applicationContext.packageName)
    val installSourcePackageName = sourceInfo.initiatingPackageName