我可以通过命令行触发媒体扫描吗?


14

是否可以通过命令行触发媒体扫描器以更新其数据库?

在Android设备上安装SSH服务器,并通过同一链接向/从文件复制文件。如果我还可以触发媒体扫描器的重新扫描,那就太好了。

我知道市场上有一些应用程序可以通过UI来执行此操作,但这不是我想要的。

任何帮助完全赞赏。

Answers:


14

SSH服务器没有设置所有必需的环境变量,因此使用Shell脚本更容易。

#!/system/bin/sh

export ANDROID_ASSETS=/system/app
export ANDROID_CACHE=/cache
export ANDROID_DATA=/data
export ASEC_MOUNTPOINT=/mnt/asec
export ANDROID_ROOT=/system
export BOOTCLASSPATH=/system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/filterfw.jar
export EXTERNAL_STORAGE=/mnt/sdcard
export LD_LIBRARY_PATH=/vendor/lib:/system/lib

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

成功时:

# rescan-media
Broadcasting: Intent { act=android.intent.action.MEDIA_MOUNTED dat=file:///mnt/sdcard }
Broadcast completed: result=0

这适用于Cyanogenmod 9.1。根据您的系统,环境可能会略有不同。

注意:在更高版本的Cyanogenmod / Android中,SD卡可能安装在/storage/sdcard0。确保知道卡的安装位置,否则将永远无法使用。Diskinfo在这里可能会有所帮助。

感谢Dan Hulme向正确的方向推动我。

参考文献:

http://developer.android.com/reference/android/content/Intent.html
http://forum.xda-developers.com/showthread.php?t=1752749
http://intwoplacesatonce.com/
http:// kennystechtalk.blogspot.co.uk/2013/08/start-android-media-scanner-from.html


在偏执的Android(CM10 / JB 4.1)上,这将导致立即重启。不知道ROM是否有问题或已更改。会调查。
肯·夏普

在CM11上这不起作用。
Jared Burrows 2014年

@JaredBurrows您是否使用了正确的路径?在CM10中,此名称已从/ mnt / sdcard更改为/ storage / sdcard0。
肯·夏普

对不起,我想解释更多。我正在运行CM11 Android 4.4.2 Kit Kat。我已经尝试过/ sdcard /,/ sdcard / Music。我的SD卡非常空。我正在尝试刷新Google Play音乐。
Jared Burrows 2014年

2
这显然不再适用于Android 8.1。甚至使用相同广播的开发人员工具GUI也不再起作用。
user149408
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.