Suelo gestionar mis archivos en Termux con scripts que utilizan el mv
para moverlos o renombrarlos. Quiero activar manualmente MediaProvider para escanear mi stroage interno ( /storage/emulated/0
) o un directorio determinado en él con la línea de comandos, en un teléfono que ejecute Nougat u Oreo.
Cuando utilizo una aplicación de gestión de archivos con interfaz gráfica, todos los movimientos/renombramientos se reflejan inmediatamente en otras aplicaciones dependientes de MediaScanner como la Galería, pero los cambios realizados en un terminal no lo hacen, hasta que se reinicie. Así que tengo que llamar manualmente a MediaScanner para actualizar mis cambios en el sistema de archivos.
Antes de KitKat, esto funcionaba bien en /storage/sdcard0
(una partición separada llamada glow
):
am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard
El comando anterior no funciona ahora ( /storage/emulated/0
), obviamente.
También he probado esto, pero parece que tampoco funciona.
am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard
Acabo de probar los comandos de nuevo, parecen funcionar en el almacenamiento extraíble como /storage/sdcard1
, /storage/usba
o /storage/{volume id}
(se vuelve a escanear), pero no el interno de mi teléfono (donde /sdcard
señala, o /storage/emulated/0
).
¿Alguien tiene alguna idea? Reiniciar mi teléfono siempre provoca una nueva exploración, pero eso es un inconveniente en algunos casos.
Nota: los comandos se ejecutan como Root, así que no hay que preocuparse por los permisos.
0 votos
¿Disparar una emisión de que la tarjeta SD estaba montada? Eso activa implícitamente el escáner de medios, ya que necesita comprobar los posibles añadidos que hayas hecho a la tarjeta. Ese es el primer comando que has mencionado. Me pregunto por qué esto ya no funciona. ¿Has probado? // Otra idea: en algunos dispositivos he encontrado una entrada correspondiente en los ajustes del desarrollador, que te permite activar un nuevo escaneo. Merece la pena echarle un vistazo.
0 votos
@Izzy No tarjeta SD, sino almacenamiento interno. Supongo que es el almacenamiento interno el que causa el problema (no escaneado en realidad).
0 votos
No sé cómo hacer esto desde adb, pero creo que se puede ir a Ajustes - Aplicaciones - Todas las aplicaciones, a continuación, pulse el menú de 3 puntos y seleccione Mostrar sistema, a continuación, desplácese hacia abajo para Media Storage y abrirlo, pulse Almacenamiento, a continuación, Borrar datos y después de que se complete el reinicio. Eso funciona en dispositivos Moto con Nougat y Oreo, puede que no sea lo que buscas, pero debe neto el mismo resultado.
0 votos
A pesar de que es de almacenamiento interno (que realmente quiere decir
/data
(¿o más bien la SD interna?), quizá merezca la pena intentarlo. difusión almacenamiento montado (tomar la SD interna entonces). No dijo desmontar / montar, sólo transmitir.0 votos
@Izzy Para aclarar, quise decir
/sdcard
que apunta a/storage/emulated/0
porque me parece que se comporta de manera diferente entre/storage/emulated/0
y/storage/sdcard1
//storage/usba
.0 votos
Eso pensaba. ¿Así que activaste la transmisión de montaje y no pasó nada? No sé por qué no debería funcionar. La cuestión es cómo reacciona el escáner de medios. En el caso de la tarjeta SD externa, debería seguir escaneándola (¿cómo puede saber si has sustituido todo el contenido antes de comprobarlo?), pero no sé si actúa de forma diferente en el caso de la tarjeta SD interna. No olvides probarlo con la ruta real (mostrada por
mount
). Aunque podría necesitar los poderes de root, ya que podría estar "protegida".0 votos
@Izzy He actualizado la pregunta con más detalles.
0 votos
Ya veo, gracias. Entonces me he quedado sin ideas. Me pregunto cómo se tratan los cambios vía MTP - pero supongo que "por archivo recibido/movido/borrado", así que tampoco hay truco por ahí.