【发布时间】:2021-01-23 06:45:24
【问题描述】:
我正在使用 queryIntentActivities 查询活动,它在 api 级别 29 中运行良好,但一旦我升级到级别 30,结果总是为空。
这是意图:
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
intent.putExtra("android.intent.extras.CAMERA_FACING", typeCamera)
uri?.grantWriteForIntent(activity, intent)
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri)
if (intent.isIntentSafe(activity)) {
activity.__waitResult__ = true
activity.startActivityForResult(intent, requestCode)
}
然后是isIntentSafe函数:
fun Intent?.isIntentSafe(context: Context) =
if (this == null)
false
else
context.packageManager.queryIntentActivities(this, PackageManager.MATCH_DEFAULT_ONLY).size > 0
这就是queryIntentActivites 在第 30 级为空而在第 29 级有内容的地方。有谁知道这些级别之间发生了什么变化会产生这种效果?
我应该补充一点,如果我在两个 api 级别中跳过isIntentSafe 检查,那么无论如何活动都可以正常启动。但我想知道为什么 isIntentSafe 在较新的 api 中停止工作。
编辑:我已经尝试改变前置摄像头的意图,就像在这个答案 How to launch front camera with intent? 中一样,这并没有什么不同。
【问题讨论】:
标签: android