设备:模拟器像素 3a - Android 11
代码:
final List<Intent> cameraIntents = new ArrayList<Intent>();
final Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
final List<ResolveInfo> listCam =
context.getPackageManager().queryIntentActivities(captureIntent, 0);
使用时:
targetSdkVersion 30
compileSdkVersion 30
listCam 大小为 0
当更改为:
compileSdkVersion 29
listCam 大小为 1 - 应该是。
使用以下代码:
val captureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
baseActivity.startActivity(captureIntent)
最佳答案
Android 11 改变了应用查询和与其他应用交互的方式。
The PackageManager methods that return results about other apps, such as queryIntentActivities(), are filtered based on the calling app's <queries> declaration.
所以你需要声明<queries>
在您的 AndroidManifest.xml
:
<manifest package="com.....">
<queries>
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
</queries>
...
</manifest>