使用resolveActivity检查是否可以处理意图



如果设备无法处理摄像头意图,我将尝试禁用应用程序中的摄像头启动按钮。我的目标是Android R(11(。到目前为止,我的代码是这个

val packageManager: PackageManager = requireActivity().packageManager
val captureImage = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
if (captureImage.resolveActivity(packageManager) == null) {
isEnabled = false
}

我遇到的问题是,当我实现此代码时,相机启动按钮总是被禁用,即使在支持它的设备上也是如此。我不确定它为什么要这样做,除此之外,我可能需要将package-visibility添加到清单文件中,但我不确定这一切是如何工作的,因为在示例中,文档并不是最好的。如有任何帮助或指导,我们将不胜感激。

您可以在最常用的中添加这样的查询

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="app.android">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<queries>
<package android:name="com.whatsapp" />
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
<intent>
<action android:name="android.intent.action.DIAL" />
</intent>
</queries>
<application
...
</application>
</manifest>

最新更新