Stack Overflow en español Asked by Leonardo Henao on February 19, 2021
Tengo una aplicación para liberar memoria de los dispositivos yendo directamente a carpetas donde se guardan archivos de cache y en especial imágenes o archivos enviados que quedan guardados en el dispositivo.
En las versiones de android inferiores a 10 funciona de maravilla, pero al actualizar mi dispositivo a android 10 noto que lee la memoria pero no lista los archivos, he buscado y no encuentro que se deba solicitar los permisos de forma distinta para la API 29 (Android 10).
Comparto el codigo que utilizo para verificar y solicitar permisos
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
val PERMISSSION_READ_MEMORY = ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
val PERMISSION_WRITE_MEMORY = ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
if (PERMISSSION_READ_MEMORY == PackageManager.PERMISSION_GRANTED && PERMISSION_WRITE_MEMORY == PackageManager.PERMISSION_GRANTED) {
escaneoMemoriaInteligente().execute()
} else {
val dialog = mCreateDialog(this, R.layout.permisos, false)
dialog.show()
dialog.bt_entendido_permisos.setOnClickListener {
dialog.dismiss()
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE), 1)
}
}
} else escaneoMemoriaInteligente().execute()
El escaneoMemoriaInteligente().execute()
es un Asyntask, aunque esta deprecated
no creo que sea la razón, ya que sin enviar al AsynTask y listar los archivos con cualquier ruta en otra parte del codigo, tampoco los muestra.
Por ejemplo:
val list = Utils.memoriaDispositivo.list()
// val list = Utils.memoriaDispositivo.listFiles()
MLog.l("lista de archivos -> $list")
Al hacer esto me mostraría por consola la lista de los archivos, pero este es el resultado
Gracias por la colaboración.
Coloco la etiqueta java ya que también manejo ese lenguaje por si la solución la encuentro en el
Primeramente solo es necesario requerir el permiso :
val PERMISSION_WRITE_MEMORY = ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
ya que es inherente el permiso READ_EXTERNAL_STORAGE
.
Ahora con respecto a el problema en el cual no puedes leer el contenido del directorio de almacenamiento externo.
El problema que tienes que en Android 10, si es que cambiaste el targetSDK
, ya no se permite de forma predeterminada leer otro directorio, afuera del que se crea para tu aplicación, de forma predeterminada debes poder leer únicamente en :
/storage/emulated/0/Android/data/<package name>/
estos cambios son debidos a seguridad.
Answered by Jorgesys on February 19, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP