Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有可能在运行时可靠地检测哪个商店安装了Android应用程序(Google Play或Amazon Market)?_Java_Android_In App Purchase_Google Play_Amazon - Fatal编程技术网

Java 是否有可能在运行时可靠地检测哪个商店安装了Android应用程序(Google Play或Amazon Market)?

Java 是否有可能在运行时可靠地检测哪个商店安装了Android应用程序(Google Play或Amazon Market)?,java,android,in-app-purchase,google-play,amazon,Java,Android,In App Purchase,Google Play,Amazon,有许多类似的问题 所有答案都建议在PackageManager类上使用类似于getInstallerPackageName的方法 所有人都有评论或相互矛盾的答案,说这不是一种可靠的方法,这表明可靠地检查哪个商店安装了给定的应用程序的唯一方法是生成两个单独的二进制文件,每个都带有storeFlag集,然后将一个二进制文件上载到Amazon,另一个上载到Google Play 我需要知道哪个应用商店是应用程序的安装程序,以便知道要与哪个商店进行应用程序内购买功能的通信 生成两个独立二进制文件的最终方

有许多类似的问题

所有答案都建议在
PackageManager
类上使用类似于
getInstallerPackageName
的方法

所有人都有评论或相互矛盾的答案,说这不是一种可靠的方法,这表明可靠地检查哪个商店安装了给定的应用程序的唯一方法是生成两个单独的二进制文件,每个都带有
storeFlag
集,然后将一个二进制文件上载到Amazon,另一个上载到Google Play

我需要知道哪个应用商店是应用程序的安装程序,以便知道要与哪个商店进行应用程序内购买功能的通信


生成两个独立二进制文件的最终方法是否100%可靠?或者有一种100%可靠的基于代码的运行时方法吗?

两个二进制文件将是最可靠的方法,但是检查Build.MANUFACTURER和installerName应该可以让您非常接近(尽管假设您想检查Amazon AppStore,如果用户在其非Kindle设备上安装了旧版本的安装程序,并且没有更新安装程序名,则安装程序名可能报告为空)

然后检查以下各项的值:

isAmazonDevice || fromAmazonStore
在相当长的一段时间里,你们应该得到你们需要的东西

这可能会混淆问题的一种情况是,如果您要侧载apk进行测试,那么它就没有正确的InstallerPackageName。您可以通过使用以下内容侧载apk来假装这一点:

adb install -i com.amazon.venezia APK_NAME

使用两个独立的二进制文件有问题吗?从字面上讲,这是一个改变一行代码的问题。考虑如何在一个设备上同时检测源存储。记住,你可以在任何设备上安装Amazon商店,因此你无法知道它是从哪里来的。es方法,但这是一种独特的设置,其中首选单个二进制。@Eluvatar,如果在同一台设备上安装了两个应用商店,我仍然需要知道哪个商店安装了该应用程序,以便我可以与该商店进行IAP通信,不是吗?是的,我会说,如果你想要可靠的东西,请使用单独的版本,我想你可以尝试找出你想要的但是如果有人从另一台设备上加载应用程序(获取apk),你会使用什么商店呢?
adb install -i com.amazon.venezia APK_NAME