2

I am using HuaWeiNova device, and I tried to access it with aft-mpt-cli.

$ aft-mtp-cli
$ ls DCIM/

I got folders listed here:

|-photos
|-Camera
....

When I tried to list or download my photos in the Camera/ folder, I got nothing. Only the empty folders are listed and the folders that contains files are not shown at all. I am quite sure my photos are stored in the Camera folder in my cell phone. How come I could not access my photos with my computer ?

5

For accessing your Android device via USB in "File Transfer" mode your computer uses the MTP protocol. This protocol allows to list and read/write the files from/to your device.

What most people don't know is that the MTP protocol does not show the content of the file-system. Instead it uses the Android MediaStore Database (an SQLite database) which is populated by the Media Provider, a special daemon running on Android (app package name: com.android.providers.media).

If you create a new file/directory or delete something without notify this daemon the database and the file-system are out-of sync and you end up that you can see files already deleted or can't see existing files.

You can force the Android MediaStore to refresh it's database.

There are three way to do so, just pick one of the following:

  1. Reboot your phone
  2. Use one of the multitude of apps that can force a rescan of the sd-card
  3. Only for Android 4-7: Use the following ADB command-line (source):

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

  • 1
    For Android 8 and above that adb command would not work. See my answer android.stackexchange.com/a/200785/96277. – Firelord 2 days ago
  • @Firelord Thanks for the info. If I draw the correct conclusion from your tests an Android 8 an updated app that sends this broadcast with an File object should work, right? And from my experience on Android 9 the MediaStore usually auto-updates the database so that there is no need for manually triggering an update. – Robert 2 days ago
  • Sorry, I can't interpret that conclusion for some reason, so can't comment on it. // I did come to know from you sometime ago that Android 9 automatically auto update the database so there is no need for a manual trigger. I had updated my answer there because mediaserver can be crased by an app (happened by an Xposed module) so an alternative solution was needed. In normal circumstances, yes, nobody would need to resort to command-line solution at all. So you answer is all good now. :) – Firelord 2 days ago

Not the answer you're looking for? Browse other questions tagged or ask your own question.