¿Qué es un proveedor de contenidos?
Parece ser un problema relacionado con los proveedores de medios. Como su nombre indica, proporcionan una base de datos de medios disponibles de forma más organizada a otras apps como la Contacts Storage
( com.Android.providers.contacts ) proporciona contactos a las aplicaciones solicitantes. El propósito es escanear y almacenar la información de los archivos multimedia para un acceso rápido, de modo que las aplicaciones individuales no tengan que escanear manualmente las carpetas para obtener una biblioteca actualizada, reduciendo así el tiempo y el esfuerzo.
Proveedores de medios integrados en Android:
Algunos exploradores de archivos, reproductores multimedia y aplicaciones de galería dependen de la base de datos de archivos ( /data/data/com.Android.providers.media/databases/external.db ) construido por Media Storage
aplicación para MediaStore del contenido del almacenamiento externo ( /sdcard
y la tarjeta SD externa; el almacenamiento extraíble como el USB no está indexado). Aplicaciones Media Storage
( com.Android.providers.media bajo el cual com.process.media corre), Downloads
( com.Android.providers.downloads.ui ), Download Manager
( com.Android.providers.downloads ) y MTP Host
( com.Android.mtp ) trabajan en colaboración bajo la misma UID.
La base de datos se construye/actualiza como MediaScanner
( Android.process.media ) es invocada por alguna aplicación, por ejemplo, mediante el envío de broadcast MEDIA_SCANNER_SCAN_FILE o a través de scanFile . Receptor de emisión com.android.providers.media.MediaScannerReceiver
se lanza en el arranque que escucha Android.intent.action.BOOT_COMPLETED para que MediaScannerService también se inicie en el arranque. Pero al reiniciar el teléfono a veces no se actualiza toda la base de datos externa (o al menos se retrasa). MediaScanner también se lanza cuando se monta un nuevo dispositivo de almacenamiento, es decir, en MEDIA_MOUNTED que podría ser emitido manualmente para forzar la actualización en versiones anteriores a KitKat.
En respuesta, las aplicaciones son informadas de las bases de datos actualizadas, por ejemplo, mediante la recepción de emisiones MEDIA_SCANNER_FINISHED o a través de onScanCompleted .
Problema con los proveedores de medios de comunicación:
MtpService también forma parte de Media Storage. Debido a algunos errores ( reconocido desde 2012 ) en la implementación de MTP, la base de datos no se actualiza o se retrasa o no se comunica adecuadamente con el cliente a medida que los archivos cambian, por lo que MTP muestra contenidos obsoletos / incompletos. Lo mismo puede ocurrir si una aplicación que crea o descarga un nuevo archivo no activa el MediaScanner o no recibe la información actualizada.
Solución:
Para forzar la actualización de la base de datos, borre el archivo y ejecute escáner de medios app. Los usuarios que no son root pueden eliminar este archivo borrando los datos de Media Storage
app.
Pero ten en cuenta, que también se despejará internal.db
que hará que los tonos de llamada no estén disponibles y se construirá una nueva base de datos de /system/media
en el siguiente reinicio, es decir, en BOOT_COMPLETED
.
PS: Tenga en cuenta que la tarjeta SD interna que vemos es emulado de /data/media/
utilizando sdcardfs
(o FUSE
en versiones anteriores de Android). El contenido real de la memoria interna se puede ver directamente desde /data/media/
(Se requiere root). UMS utilizado para exponer el /data
dispositivo de bloque a PC, pero fue desaprobado en favor de MTP. Es una buena opción cuando hay que transferir datos de gran tamaño a alta velocidad. Se puede activar mediante alguna solución .
También hay otras alternativas razonables para MTP como FTP, SFTP/SSHFS, adbfs etc.
RECURSOS: