我知道,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 Store、Amazon Appstore、Opera Mobile Store还是Samsung Apps store等安装的……
以下链接可帮助您安装Amazon App:
任何帮助都是非常感谢的。
发布于 2014-05-15 18:59:03
没有实现这一点的API。你不知道apk是侧面加载的还是从store安装的。不是100%确定一些商店是否有某种类型的客户端数据库,但并不是所有的商店都有。
发布于 2014-05-23 02:30:18
假设你使用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/src/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 ...)并且您可以将它们部署到各自的存储中
发布于 2021-06-29 14:19:31
您可以使用InstallSourceInfo查看API30及以上级别的安装源
val sourceInfo = applicationContext.packageManager.getInstallSourceInfo(applicationContext.packageName)
val installSourcePackageName = sourceInfo.initiatingPackageNamehttps://stackoverflow.com/questions/23676067
复制相似问题