Google suggests链接到Google Play商店的方法是:
market://details?id=<package_name>
(如果您在应用程序中),和
http://play.google.com/store/apps/details?id=<package_name>
如果您正在浏览网页。
当我们遵循这种策略时,即使Google Play商店中有我们正在寻找的应用,我们仍然敬酒“找不到此类应用”。
事实证明,这是由两个市场服务商的竞争引起的:F-droid(开源市场)和Google Play商店。通过查看intent resolvers的软件包管理器,我发现有多个。
我只希望我的应用程序链接到Google Play商店中的应用程序。
有没有办法强制该应用程序响应我的
market://[...]
链接?Other strategies建议尝试一种方法,如果失败,则尝试
http://[...]
链接。 (链接的解决方案对我来说失败了,因为没有抛出异常。)如果我总是通过http://方法链接,会出什么问题?即,跳过
market://
链接,然后直接在应用程序中使用http://
。这个决定以后会再次困扰我吗? 最佳答案
不,您正在尝试使用Uri
ACTION_VIEW
打开Intent
。原则上,欢迎用户使用所需的任何内容处理该请求,就像他们可以使用所需的任何应用程序打开PDF一样。这是Android中为数不多的几个地方之一,我认为尝试强制该问题并将用户引导到特定的应用程序,并远离他们通常选择的位置是有道理的。
如果您是为此startActivity()
调用Uri
的人,则可以将Intent
包装在Intent.createChooser()
中。如果存在多个与Intent
匹配的 Activity ,这将迫使选择器对话框出现,避免使用默认对话框。这是最安全,最稳定的方法,因为它不依赖于Play商店本身的任何细节。
您可以在setComponent()
上调用Intent
并提供理论上指向所需 Activity 的ComponentName
。这就是Google摆脱困境的重构。
您可以尝试查看setPackage()
是否将Intent
分辨率限制为所需的应用程序。再一次,如果Google决定切换到其他包作为其进入Play商店的入口点,那么您将不得不适应。而且我不确定setPackage()
在这种情况下是否受到尊重。
是的,因为您的问题不是没有匹配项,而是有多个匹配项,所以做出了另一个选择而不是您想要的选择。
就其他的应用程序(例如Web浏览器)而言,这并不能真正解决您的问题。
关于android - 多个市场处理程序导致找不到应用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24335244/