2 votes

Pourquoi le MTP affiche-t-il un emplacement de répertoire erroné ?

MTP ( Miser sur le protocole de transfert ) a échoué une fois de plus.

Après avoir déplacé un répertoire vers un chemin différent, il est toujours sur le même chemin qu'avant selon MTP.

J'ai déjà essayé de rebrancher le port USB et de le lire depuis un autre ordinateur. Même résultat.

Pourquoi le MTP est si faux qu'il montre un dossier déplacé sur son chemin précédent ?

5voto

Irfan Latif Points 16863

Qu'est-ce qu'un fournisseur de contenu ?

Il semble qu'il s'agisse d'un problème lié aux fournisseurs de médias. Comme leur nom l'indique, ils fournissent une base de données des médias disponibles d'une manière plus organisée à d'autres applications comme l'application Contacts Storage ( com.Android.providers.contacts ) fournit des contacts aux applications demandeuses. L'objectif est de numériser et de stocker les informations sur les fichiers multimédias pour un accès rapide, afin que les applications individuelles n'aient pas à analyser manuellement les dossiers pour obtenir une bibliothèque à jour, ce qui réduit le temps et les efforts.

Les fournisseurs de médias intégrés d'Android :

Certains explorateurs de fichiers, lecteurs multimédia et applications de galerie dépendent de la base de données des fichiers ( /data/data/com.Android.providers.media/databases/external.db ) construit par Media Storage pour MediaStore du fournisseur de contenu à partir du contenu du stockage externe ( /sdcard et carte SD externe ; les supports amovibles comme l'USB ne sont pas indexés). Apps Media Storage ( com.Android.providers.media en vertu de laquelle com.process.media runs), Downloads ( com.Android.providers.downloads.ui ), Download Manager ( com.Android.providers.downloads ) et MTP Host ( com.Android.mtp ) travaillent en collaboration sous le même UID.

La base de données est construite/mise à jour au fur et à mesure que MediaScanner ( Android.process.media ) est invoqué par une application, par exemple en envoyant des messages de diffusion. FICHIER_MÉDIA_SCANNER_SCANNER ou par scanFile . Récepteur de radiodiffusion com.android.providers.media.MediaScannerReceiver est lancé au démarrage et écoute les Android.intent.action.BOOT_COMPLETED pour que MediaScannerService soit également lancé au démarrage. Mais il arrive que le redémarrage du téléphone ne mette pas à jour toute la base de données externe (ou du moins retarde le processus). MediaScanner est également déclenché lorsqu'un nouveau périphérique de stockage est monté, c'est-à-dire sur MEDIA_MOUNTED qui pourrait éventuellement être diffusé manuellement pour forcer la mise à jour sur les versions antérieures à KitKat.
En réponse, les applications sont informées de la mise à jour des bases de données, par exemple en recevant des diffusions. SCANNEUR_MÉDIA_FINI ou par onScanCompleted .

Problème avec les fournisseurs de médias :

MtpService fait également partie de Media Storage. En raison de certains bogues ( reconnu depuis 2012 ) dans la mise en œuvre du MTP, la base de données n'est pas mise à jour ou est retardée ou n'est pas correctement communiquée au client lorsque les fichiers changent, de sorte que le MTP montre des contenus périmés / incomplets. La même chose peut se produire si une application créant ou téléchargeant un nouveau fichier ne déclenche pas le MediaScanner ou ne reçoit pas en retour les informations mises à jour.

Solution :

Afin de forcer la mise à jour de la base de données, supprimez le fichier et exécutez quelques scanner de médias app. Les utilisateurs non rootés peuvent supprimer ce fichier en effaçant les données de l'application. Media Storage app.
Mais attention, ça va aussi dégager internal.db ce qui rendra les sonneries indisponibles et une nouvelle base de données sera construite à partir de /system/media au prochain redémarrage, c'est-à-dire au BOOT_COMPLETED .

PS : Notez que la carte SD interne que nous voyons est émulé de /data/media/ en utilisant sdcardfs (ou FUSE dans les anciennes versions d'Android). Le contenu réel de la mémoire interne peut être vu directement à partir de /data/media/ (Racine requise). UMS utilisé pour exposer le /data d'un dispositif de blocage à un PC mais a été déprécié en faveur du MTP. C'est une bonne option lorsque des données de grande taille doivent être transférées à grande vitesse. Il peut être activé par une solution de contournement .
Il existe également d'autres alternatives raisonnables pour MTP comme FTP, SFTP/SSHFS, adbfs etc.

RESSOURCES :

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X