我正在使用隐式意图来打开画廊以选择图像。我通常会执行以下操作:
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)
}
但是,如果该意图仅通过我设备上的单个应用程序解决,并且没有其他图库应用程序,只有一个应用程序,则选择器将仅显示无用的单个选择。
我如何确定是否有许多活动可以解决该意图?如何获得实际适合的活动数量?因此,决定是否显示选择器。
我如何确定是否有许多活动可以解决该意图?
呼叫queryIntentActivities()
上PackageManager
,提供你的Intent
。
如何获得实际适合的活动数量?
抱歉,但是在这种情况下我不知道“合适”是什么意思。
因此,决定是否显示选择器
您可以简单地摆脱Intent.createChooser()
通话。仅当您希望强迫用户不得不与选择者打交道时,才使用它。如果不选择Intent.createChooser()
,则系统将在需要时自行显示选择器。在以下情况下会发生这种情况:
有2个以上与匹配的活动Intent
,并且
用户尚未为该Intent
结构选择默认活动
顺便说一句,请type = "image/*"
从您的代码中删除。ACTION_PICK
不使用MIME类型。