gpt4 book ai didi

android - 多个市场处理程序导致找不到应用程序

转载 作者:行者123 更新时间:2023-11-29 00:18:58 25 4
gpt4 key购买 nike

Google suggests链接到 Google Play Store 的方式是:

  • market://details?id=<package_name>如果你在申请中,和
  • http://play.google.com/store/apps/details?id=<package_name>如果你在网页上。

当我们遵循这个策略时,即使 Google Play 商店有我们正在寻找的应用程序,我们也会得到“找不到这样的应用程序”的 toast 。

事实证明,这是由两个市场处理者的竞争引起的:F-droid(开源市场)和 Google Play Store。通过查看 intent resolvers 的包管理器,我发现有多个.

我只希望我的应用程序链接到 Google Play 商店中的应用程序。有没有办法强制该应用响应我的 market://[...]链接?

Other strategies建议尝试一种方法,如果失败,请尝试 http://[...]关联。 (链接的解决方案对我来说失败了,因为没有抛出异常。)

如果我总是通过 http://方法链接会出什么问题?即,跳过 market://链接,并使用 http://直接在应用程序中。这个决定以后会不会再次困扰我?

最佳答案

I'm not linking to open source apps, I'm linking to Google play store ones

不,您正在尝试使用 ACTION_VIEW Intent 打开 Uri。原则上,欢迎用户使用他们想要的任何东西来处理该请求,就像他们可以使用他们想要的任何应用程序打开 PDF 一样。这是 Android 中为数不多的地方之一,在这些地方我认为有理由尝试强制解决问题并将用户引导到特定的应用程序,而不是他们通常选择的任何应用程序。

I only ever want apps in the Google Play Store to be linked to by my app. Is there a way to force that app to respond to my market://[...] link?

如果您是为这个 Uri 调用 startActivity() 的人,您可以将 Intent 包装在 Intent.createChooser( )。如果有多个 Activity 匹配 Intent,这将强制显示选择器对话框,避免默认设置。这是最安全、最稳定的方法,因为它不依赖于 Play 商店本身的任何细节。

您可以在 Intent 上调用 setComponent() 并提供理论上指向所需 Activity 的 ComponentName。这是谷歌为了避免破坏而进行的重构。

您可以尝试查看 setPackage() 是否会将 Intent 分辨率限制为您所需的应用。再一次,如果谷歌决定切换到不同的包作为其进入 Play 商店的入口点,你将不得不适应。而且我不确定 setPackage() 是否在这种情况下得到尊重。

Other strategies suggest attempting one approach, and if that fails, trying the http://[...] link. (The linked solution failed for me, as no exception was thrown.)

是的,因为您的问题不是没有匹配项,而是有多个匹配项,并且做出了另一种选择,而不是您想要的选择。

What will go wrong if I always link via the http:// method? I.e., skip the market:// link, and use http:// directly in the app.

这并不能真正解决您的问题,因为还有其他应用可以处理该 Intent,例如 Web 浏览器。

关于android - 多个市场处理程序导致找不到应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24335244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com