ADB 相册扫描命令

相册扫描 ADB 命令

参考:https://cloud.tencent.com/developer/article/2309014

Android系统中有一个媒体扫描服务MediaScannerService,它会定期扫描设备存储空间的媒体文件,提取文件信息生成媒体数据库。各类媒体应用如相册、音乐播放器都依赖这个数据库展示文件。当通过adb等方式新增文件时,由于扫描不实时,需要等待下次系统自动扫描或者手动刷新,才能在应用中展现新文件。所以需要adb调用主动扫描。

测试只有 am broadcast 单个文件扫描有效,其它无效(Android 9),之后再试试其它版本。

1、通过am broadcast命令发送扫描广播

Android 9 有效:

am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/DCIM/1.jpg

Android 9 无效:

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

2、通过adb shell 使用media scanner命令

扫描单个文件

media scanner file /sdcard/DCIM/camera/test.jpg

扫描整个目录

media scanner file /sdcard/DCIM/camera/

命令说明:

adb shell   //进入adb shell环境
am         //调用Activity Manager
broadcast  //发送广播
-a         //指定action,扫描媒体文件
-d         //指定扫描目录

3、注意(执行强制媒体扫描问题)

  1. 频繁扫描会占用更多CPU和电量,不要过度扫描。
  2. 广播扫描只通知媒体数据库更新,不会刷新相册应用内存缓存,可能需要重新打开相册应用才能看到最新文件。
  3. 某些Android版本在外部存储空间需要写入权限,否则扫描会失败。
  4. 扫描命令返回值需要检查,如果扫描失败则可能需要确认目录权限或重新执行。
  5. 和目标设备的Android版本相关,部分低版本设备不支持某些扫描命令。

 

posted @ 2024-01-24 17:42  fieldtianye  阅读(572)  评论(0)    收藏  举报