ACTION_GET_CONTENT para obtener la imagen devuelve una URI nula.
Tengo una aplicación publicada que utiliza un intent ACTION_GET_CONTENT
para permitir al usuario seleccionar una de sus imágenes. Aquí está el código que lanza el intent:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false);
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
intent.putExtra(Intent.CATEGORY_OPENABLE, true);
startActivityForResult(Intent.createChooser(intent, getString(R.string.select_pic)), SELECT_IMAGE);
Y aquí está el onActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(resultCode == RESULT_OK) {
if (requestCode == SELECT_IMAGE) {
if (data != null) {
Uri uri = data.getData();
...
}
}
}
}
super.onActivityResult(requestCode, resultCode, data);
}
El problema aquí es que, en algunos dispositivos, uri
es nulo incluso si el usuario ha seleccionado una imagen. Principalmente en dispositivos Samsung y también en algunos teléfonos Motorola. También lo intenté con ACTION_PICK
en lugar de ACTION_CONTENT
, pero también sucedió en algunos otros dispositivos. Así que me gustaría saber si hay alguna manera de permitir al usuario seleccionar una imagen que sea universal.
Algunos teléfonos que sufren este problema son:
– Samsung galaxy A21S – Android 11 (SDK 30)
– Samsung galaxy A3 (2016) – Android 7.0 (SDK 24)
– Motorola moto e6 play – Android 9 (SDK 28)
Algunos de los usuarios de estos dispositivos afectados están notificando que esto ocurre solo a veces.
davy.ai
Tengo una aplicación publicada que usa la intención
ACTION_GET_CONTENT
para permitir al usuario seleccionar una de sus imágenes. Aquí está el código que lanza la intención: El problema aquí es que, en algunos dispositivos,uri
es nulo aunque el usuario haya seleccionado una imagen. Principalmente en dispositivos Samsung y algunos teléfonos Motorola. También intenté conACTION_PICK
en lugar deACTION_CONTENT
, pero también ocurrió en algunos otros dispositivos. Entonces quisiera saber si hay alguna forma de permitir al usuario elegir una imagen que sea universal.El problema de
uri
siendo nulo aunque el usuario haya seleccionado una imagen mientras usa las intencionesACTION_GET_CONTENT
oACTION_PICK
es un problema conocido en algunos dispositivos Samsung y Motorola. Este problema ocurre solo algunas veces en dispositivos afectados, y no está relacionado con el código que has escrito.Para resolver este problema, puedes usar una biblioteca de terceros como
TedPicker
oEasyImage
. Estas bibliotecas proporcionan una manera simple de obtener imágenes del dispositivo del usuario y funcionan bien en la mayoría de los dispositivos. Otra forma de resolver este problema es usar la APIMediaStore
para obtener las imágenes del usuario. Este enfoque requiere código adicional, pero asegura que tu aplicación funcione bien en todos los dispositivos.Aquí tienes un ejemplo de cómo usar la API
MediaStore
:Al usar la API
MediaStore
, puedes recuperar todas las imágenes del usuario sin depender de las intencionesACTION_GET_CONTENT
oACTION_PICK
. Este enfoque asegura que tu aplicación funcione bien en todos los dispositivos.