5 votes

Pourquoi mon dossier DCIM est vide sur l'ordinateur mais pas sur le téléphone ?

J'utilise un appareil HuaWeiNova, et j'ai essayé d'y accéder avec aft-mtp-cli.

$ aft-mtp-cli
$ ls DCIM/

J'ai des dossiers listés ici :

|-photos
|-Camera
....

Lorsque j'ai essayé de répertorier ou de télécharger mes photos dans la section Camera/ dossier, je n'ai rien. Seuls les dossiers vides sont répertoriés et les dossiers qui contiennent des fichiers ne sont pas affichés du tout. Je suis tout à fait sûr que mes photos sont stockées dans le dossier Camera dans mon téléphone portable. Comment se fait-il que je ne puisse pas accéder à mes photos avec mon ordinateur ?

0 votes

Peut-être que vos photos se trouvent sur la carte SD, mais que vous affichez le stockage interne ?

0 votes

9voto

pr0nin Points 353

Pour accéder à votre appareil Android via USB en mode "Transfert de fichiers", votre ordinateur utilise le protocole MTP. Ce protocole permet de lister et de lire/écrire les fichiers depuis/vers votre appareil.

Ce que la plupart des gens ne savent pas, c'est que le protocole MTP n'affiche pas le contenu du système de fichiers. Au lieu de cela, il utilise la base de données MediaStore d'Android (une base de données SQLite), qui est alimentée par le fichier Fournisseur de médias un démon spécial fonctionnant sur Android (nom du paquet d'applications : com.android.providers.media ).

Si vous créez un nouveau fichier/répertoire ou supprimez quelque chose sans en avertir ce démon, la base de données et le système de fichiers ne sont pas synchronisés et vous vous retrouvez à voir des fichiers déjà supprimés ou à ne pas voir des fichiers existants.

Vous pouvez forcer le MediaStore Android à rafraîchir sa base de données.

Il y a trois façons de le faire, il suffit de choisir l'une des suivantes :

  1. Redémarrez votre téléphone

  2. Utilisez l'une des nombreuses applications qui peuvent forcer un rescan de la carte sd

  3. Uniquement pour Android 4-7 : Utilisez la ligne de commande ADB suivante ( 根源 ) :

    adb shell am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard

Réinitialisation de la base de données MediaStore

Il peut arriver que la base de données MediaStore soit corrompue. Dans un tel cas, ouvrez la page d'information de l'application de com.android.providers.media (activez "show system apps") et effacez le stockage de cette application. Ensuite, redémarrez l'appareil.

Après le redémarrage, connectez-vous en utilisant votre mot de passe/pin/modèle afin de pouvoir voir le lanceur. Laissez ensuite l'appareil tranquille pour régénérer la base de données des médias. Cela peut prendre quelques minutes ou quelques heures en fonction du nombre de fichiers multimédias que vous avez sur votre téléphone.

Si cela ne résout toujours pas le problème des fichiers et dossiers manquants, il se peut qu'un fichier multimédia soit corrompu sur votre téléphone, ce qui empêche la poursuite de l'analyse des fichiers multimédia. Dans ce cas, vous devez d'abord identifier le fichier corrompu et le supprimer ou le réparer.

1 votes

Pour Android 8 et plus, cette commande adb ne fonctionne pas. Voir ma réponse Android.stackexchange.com/a/200785/96277 .

0 votes

@Firelord Merci pour l'information. Si je tire la bonne conclusion de vos tests un Android 8 une application mise à jour qui envoie ce broadcast avec un File devrait fonctionner, n'est-ce pas ? Et d'après mon expérience sur Android 9, le MediaStore met généralement à jour automatiquement la base de données, de sorte qu'il n'est pas nécessaire de déclencher manuellement une mise à jour.

0 votes

Désolé, je ne peux pas interpréter cette conclusion pour une raison quelconque, et je ne peux donc pas la commenter. // J'ai appris par vous il y a quelque temps qu'Android 9 mettait automatiquement à jour la base de données et qu'il n'y avait donc pas besoin de déclencher manuellement la mise à jour. J'avais mis à jour ma réponse car mediaserver peut être bloqué par une application (c'est arrivé par un module Xposed) donc une solution alternative était nécessaire. Dans des circonstances normales, oui, personne n'aurait besoin de recourir à une solution en ligne de commande. Donc votre réponse est bonne maintenant :)

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