You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ADB获取Android(API25+)媒体ID并打开媒体文件?

获取媒体ID并打开媒体文件的方法(API 25+ 未root设备)

一、正确使用content query获取媒体ID

权限错误多因命令参数不规范,针对不同媒体类型,用以下命令可绕过大部分权限限制:

1. 查询图片的媒体ID(匹配文件路径)

adb shell content query --uri content://media/external/images/media --projection _id,data --where "data='/sdcard/myfile.jpg'"

返回结果里的_id字段就是目标图片的媒体ID。

2. 查询音频文件的媒体ID

adb shell content query --uri content://media/external/audio/media --projection _id,data --where "data='/sdcard/myaudio.mp3'"

3. 查询视频文件的媒体ID

adb shell content query --uri content://media/external/video/media --projection _id,data --where "data='/sdcard/myvideo.mp4'"

注意:文件在SD卡子目录时,路径要写完整(比如/sdcard/Pictures/photo.jpg);路径含特殊字符(如空格)需用单引号包裹或转义(空格替换为%20)。

若仍遇权限问题,尝试添加--user 0参数(指定系统用户):

adb shell content query --user 0 --uri content://media/external/images/media --projection _id,data --where "data='/sdcard/myfile.jpg'"

二、通过媒体ID打开文件

拿到ID后,用对应类型的命令打开:

1. 打开图片

adb shell am start -a android.intent.action.VIEW -t image/* -d content://media/external/images/media/[媒体ID]

2. 打开音频

adb shell am start -a android.intent.action.VIEW -t audio/* -d content://media/external/audio/media/[媒体ID]

3. 打开视频

adb shell am start -a android.intent.action.VIEW -t video/* -d content://media/external/video/media/[媒体ID]

三、替代方案:强制触发媒体扫描(针对刚传入的文件)

新传入的文件若未被媒体库索引,先执行扫描命令让系统识别,再查询ID:

adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/myfile.jpg

等待几秒后再执行content query即可找到ID。

四、特殊场景:绕过媒体ID直接打开

若仍无法获取ID,可尝试指定系统媒体查看器包名直接打开文件路径(部分设备有效):

# 图片示例:用系统图库打开
adb shell am start -n com.android.gallery3d/.app.GalleryActivity -d file:///sdcard/myfile.jpg

注意:不同设备的媒体查看器包名可能不同,可通过adb shell pm list packages | grep gallery或grep video查找对应包名。

内容的提问来源于stack exchange,提问作者user4500

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 14:52:07