我了解到,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 Store
、Amazon Appstore
、Opera Mobile Store
还是Samsung Apps store
等安装的。。。。
以下链接可能有助于亚马逊应用程序的安装:
安卓安装源
感谢您的帮助。
这方面没有API。你无法知道apk是侧面加载的还是从商店安装的。不能100%确定某些商店是否有某种客户端数据库,但并非所有商店都有。
假设你使用Gradle,你可以为每个商店使用不同的产品口味。您可以为每个风格创建一个资源文件,然后在运行时读取该资源的值,以确定您正在运行的风格。每个风格只需要一个额外的资源XML文件,并在build.gradle中定义这些风格。在进行这些修改后构建应用程序将导致每个存储区有1个APK,除了一个资源值之外,其余都是相同的。
http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-产品口味
像这样的。。。将这些添加到您的构建中。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…(,您可以将每个文件部署到各自的存储
您可以使用InstallSourceInfo 检查API 30级及以上的安装源代码
val sourceInfo = applicationContext.packageManager.getInstallSourceInfo(applicationContext.packageName)
val installSourcePackageName = sourceInfo.initiatingPackageName