2

背景:我正在开发一个高效的开源 android 启动器(在 GitHub 上查看)。在它的settings-activity中有一个标记为按钮Install apps,应该将用户带到他选择的商店(F-Droid 或 PlayStore)。


目前,该按钮只能打开 PlayStore。这是相应的代码(最小的可重现示例):

// in the install buttons on-click listener:

val storeIntent = Intent(
  Intent.ACTION_VIEW,
  Uri.parse("https://play.google.com/store/apps/")
)
startActivity(storeIntent) // go to the store

StackOverflow 上的其他帖子向我展示了使用market://URI(来自此答案)以使用意图打开任何商店(并自动让用户决定他们想去哪个商店)。这是功能性的(并且在应用程序中的另一点使用)但在这里不是很有帮助,因为我们想打开商店主页/起始页

普通market://URI 不会选择要打开的任何应用程序,并且以market://detailsonly 开头的 URI 能够搜索?q=、按类别过滤商店?c=以及显示应用程序详细信息。


是否有 URI / Intent 可用于将用户带到任何商店的主页(系统建议有能力的市场应用程序)?

4

1 回答 1

1

这是对应的代码

请注意,Play 商店应用不需要宣传<intent-filter>匹配此Intent结构的广告。如果有一天 Play 商店将其删除,这Intent可能会启动浏览器<intent-filter>ActivityNotFoundException如果用户没有合适的应用程序(例如,他们正在运行受限制的配置文件并且无法访问Play 商店和 Web 浏览器)它也可能会崩溃。

是否有 URI / Intent 可用于将用户带到任何商店的主页(系统建议有能力的市场应用程序)?

不,只要不要求任何特定应用商店的应用向其他应用宣传它们确实是应用商店。

您可以尝试在选择器中使用CATEGORY_APP_MARKETIntent尝试拉入应用商店:

    private fun launchGooglePlay() {
        val intent = Intent.makeMainSelectorActivity(
            Intent.ACTION_MAIN,
            Intent.CATEGORY_APP_MARKET
        )
        try {
            startActivity(intent)
        } catch (e: ActivityNotFoundException) {
            Log.e(tag, "launchGooglePlay()", e)
        }
    }

(从这个要点

然而,基于对 F-Droid 清单的快速扫描,我认为他们不会对此做出回应。如果他们不这样做,您可以为他们的项目做出更改,以便他们这样做。但是,华为、三星或其他应用商店是否支持这种Intent方法取决于他们的开发人员。

于 2020-10-18T22:55:10.257 回答