Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android READ_EXTERNAL_STORAGE permiso no funciona

Estoy tratando de crear una aplicación sencilla que puede obtener una imagen de la aplicación Galería y mostrarla en un imageButton. Estoy probando con API 21 en un teléfono con Android 5.0.1. Desafortunadamente, no importa lo que intento, sigo recibiendo un error de seguridad, incluso cuando especifico los permisos.

Mi código para obtener la recuperación de la imagen es:

  • ¿Cómo anular la lista de cifrado enviada al servidor por Android cuando se utiliza HttpsURLConnection?
  • 4.4.4 no está en el gestor SDK de Android
  • Leer todos los SMS de un remitente en particular
  • La función openOptionsMenu no funciona en ICS?
  • Se encontró la configuración de JDK Gradle no válida?
  • Ejecución del nuevo emulador de Intel para Android
  • @Override protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent){ super.onActivityResult(requestCode, resultCode, imageReturnedIntent); switch(requestCode){ case PICK_IMAGE_REQUEST: if(resultCode == RESULT_OK && imageReturnedIntent != null && imageReturnedIntent.getData() != null) { Uri uri = imageReturnedIntent.getData(); try { Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); // Log.d(TAG, String.valueOf(bitmap)); ImageButton ib = (ImageButton) findViewById(R.id.inputImg); ib.setImageBitmap(bitmap); } catch (IOException e) { e.printStackTrace(); } } break; } } 

    El código funciona cuando intento seleccionar una imagen de Dropbox, pero cuando selecciono una imagen de la galería, obtengo

     java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media/35634 from pid=25240, uid=10070 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission() 

    Hice la etiqueta del uso-permiso para READ_EXTERNAL_STORAGE un niño del manifest:

     <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="[REDACTED]"> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" /> <uses-permission tools:node="replace" android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="18" /> <application> [REDACTED] </application> </manifest> 

    He buscado alto y bajo en otros puestos, pero todavía no puedo entender por qué sigo recibiendo este molestia error.

  • Android CardView con borde extraño cuando transparente
  • Cómo cambiar el tamaño del marcador de imagen de ImageView con picasso
  • Gerente de localización problema para helado sandwhich
  • Compartir imagen android desde url
  • Obtener mensajes de WhatsApp
  • ¿Por qué es Intent.getAction () nulo de mi actividad de búsqueda?
  • 4 Solutions collect form web for “Android READ_EXTERNAL_STORAGE permiso no funciona”

    PROBLEMA
    Tienes el error

    Java.lang.SecurityException: Permiso Negación: lectura com.android.providers.media.MediaProvider uri contenido: // media / external / images / media / 35634 de pid = 25240, uid = 10070 r evalúa android.permission.READ_EXTERNAL_STORAGE o GrantUriPermission ().

    PORQUE
    No estás dando correctamente permisos debido a android:maxSdkVersion="18" , que según la documentación.

    El nivel de API más alto en el que se debe conceder este permiso a tu aplicación. Establecer este atributo es útil si el permiso que requiere su aplicación ya no es necesario a partir de cierto nivel de API.

    Siempre y cuando no hayas dado permisos a la API 21 tu aplicación se está comportando bien.

    Consulte este tema para obtener más información.

    SOLUCIÓN
    Si desea otorgar permisos de lectura bajo la API 21 , debe declararlos como:

     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="21" /> 

    IMPORTANTE:

    Esto sólo tiene sentido cuando se necesita dar permisos adicionales porque algunas api antiguas requieren permisos que no son nuevas versiones, por lo que la experiencia del usuario mejora, ya que solo solicita ciertos permisos cuando sea necesario.


    Así (en este caso) la forma correcta será:

     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

    AÑADIR
    Si desea guardar datos, debe agregar permisos WRITE_EXTERNAL_STORAGE .

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    Simplemente reemplazar con el siguiente y tratar,

     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    Mientras depura en algunos dispositivos, necesitas conceder permiso explícitamente accediendo a tu configuración -> aplicaciones -> MY_APPLICATION -> Permisos y luego conceder permisos requeridos.

    Además de agregar lo siguiente en AndroidManifest.xml

     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

    También necesitamos solicitar permiso en la actividad para que la aplicación tenga acceso al almacenamiento externo. https://developer.android.com/training/permissions/requesting.html

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.