Android 11 (R) devuelve una lista vacía al consultar la intención de ACTION_IMAGE_CAPTURE (no se puede consultar la cámara)

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>

Supongo que te gusta

Origin blog.csdn.net/weixin_42504805/article/details/131960297
Recomendado
Clasificación