android - 如何获得满足隐含意图的活动数量?
问题描述
我正在使用隐式意图,例如,打开图库以选择图像。我通常会执行以下操作:
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 类型。
推荐阅读
- android - 如何将 ListView 内容放入 EditText?
- git - 在 Gitlab 登录页面中更改选项卡名称
- javascript - 控制台登录单行
- coq - 先写假设?
- angularjs - ng-repeat 评论在 Internet Explorer 中显示,同时在其他 angularjs 上工作正常
- excel - 将中间过滤范围传递给 INDEX MATCH
- vue.js - Datepicker VueJS,正确的可视化但不以相同的格式发送
- angular - 我可以更改 Rxjs Retry 上的查询参数值吗?
- android - IllegalArgumentException:此 NavController 未知导航目的地 xxx
- sql - 在 SQL Server 中重复一行 n 次 - 根据一列