Dispositivo: Emulador Pixel 3a - Android 11
Código:
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);
al usarlo:
targetSdkVersion 30
compileSdkVersion 30
El tamaño de listCam es 0
cuando se cambia a:
compileSdkVersion 29
El tamaño de listCam es 1, como debería ser.
Utilice el siguiente código:
val captureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
baseActivity.startActivity(captureIntent)
La mejor respuesta
Android 11 cambia la forma en que las aplicaciones consultan e interactúan con otras aplicaciones.
The PackageManager methods that return results about other apps, such as queryIntentActivities(), are filtered based on the calling app's <queries> declaration.
Entonces necesitas declarar <queries>
en tu AndroidManifest.xml
:
<manifest package="com.....">
<queries>
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
</queries>
...
</manifest>