首页 > 解决方案 > 如何获得满足隐含意图的活动数量?

问题描述

我正在使用隐式意图,例如,打开图库以选择图像。我通常会执行以下操作:

Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
    .takeIf { it.resolveActivity(activity.packageManager) != null }
    ?.let {
        val intent = Intent.createChooser(it, "Choose gallery")
        activity.startActivityForResult(intent, rc)
    }

但是,如果仅通过我设备上的单个应用程序解决了该意图,并且除了一个之外没有其他画廊应用程序,那么选择器将仅显示无用的单个选择。

我怎么知道是否有很多活动可以处理这种意图?如何获得真正适合的活动数​​量?因此,决定是否显示选择器

标签: androidandroid-intent

解决方案


我怎么知道是否有很多活动可以处理这种意图?

呼吁queryIntentActivities()PackageManager提供您的Intent.

如何获得真正适合的活动数​​量?

抱歉,但我不知道在这种情况下“适合”是什么意思。

因此,决定是否显示选择器

您可以简单地摆脱Intent.createChooser()呼叫。仅当您希望强制用户必须处理选择器时才使用它。如果您离开Intent.createChooser(),系统将在需要时自行显示选择器。如果发生这种情况:

  • 有 2+ 个活动符合Intent, 和
  • 用户尚未为该Intent结构选择默认活动

顺便说一句,请type = "image/*"从您的代码中删除。ACTION_PICK不使用 MIME 类型。


推荐阅读