关于Uri.parse("content://media/external/fs_id")的疑问

a220315410 2011-06-28 04:41:25

static int getCardId(Context context) {
ContentResolver res = context.getContentResolver();
Cursor c = res.query(Uri.parse("content://media/external/fs_id"), null, null, null, null);
int id = -1;
if (c != null) {
c.moveToFirst();
id = c.getInt(0);
c.close();
}
return id;
}

以上代码是com.android.music AP中的一部分。我想问下Uri.parse("content://media/external/fs_id")这个东西是是啥玩意?SDcard的序列号?还是别的什么东西?
...全文
37462 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
a220315410 2011-09-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gaoshoubo 的回复:]

不知道楼主有没有摸清楚?!我现在也碰到类似的问题,请赐教!谢谢
[/Quote]
不好意思,没搞清楚,上次遇到这个问题,应该是在看MiediaScanner部分的源码的时候吧,后来不再关注MediaScanner的部分了,也就放弃了。
MrGaoGao 2011-09-08
  • 打赏
  • 举报
回复
不知道楼主有没有摸清楚?!我现在也碰到类似的问题,请赐教!谢谢
david-yue 2011-06-28
  • 打赏
  • 举报
回复
查询外部SD卡中的文件,fs_id就是该SD卡上所有文件实体的ID号,不是其他的抽象资源号,其他的资源号正如4楼所说的。
xinqiqi123 2011-06-28
  • 打赏
  • 举报
回复
content://media/external/fs_id

fs_id:唯一文件系统标识号,也就是定死的
个人理解是:此URL返回Sdcard上和fs_id对应的存储路径下所有媒体文件

content://media/external/fs_id此URL决定了ContentResolver 应该与哪一个ContentProvider对话即和此\packages\providers\MediaProvider\src\com\android\providers\media\MediaProvider.java对话
a220315410 2011-06-28
  • 打赏
  • 举报
回复
DEBUG调试了一下:
static int getCardId(Context context) {
ContentResolver res = context.getContentResolver();
Cursor c = res.query(Uri.parse("content://media/external/fs_id"), null, null, null, null);
int id = -1;
if (c != null) {
c.moveToFirst();
id = c.getInt(0);//id = -1133417252
c.close();
}
return id;
}

谁能告诉我这是怎么回事?
fontlose 2011-06-28
  • 打赏
  • 举报
回复
在源码目录\packages\providers\MediaProvider\src\com\android\providers\media\MediaProvider.java
里定义了


URI_MATCHER.addURI("media", "*/images/media", IMAGES_MEDIA);
URI_MATCHER.addURI("media", "*/images/media/#", IMAGES_MEDIA_ID);
URI_MATCHER.addURI("media", "*/images/thumbnails", IMAGES_THUMBNAILS);
URI_MATCHER.addURI("media", "*/images/thumbnails/#", IMAGES_THUMBNAILS_ID);

URI_MATCHER.addURI("media", "*/audio/media", AUDIO_MEDIA);
URI_MATCHER.addURI("media", "*/audio/media/#", AUDIO_MEDIA_ID);
URI_MATCHER.addURI("media", "*/audio/media/#/genres", AUDIO_MEDIA_ID_GENRES);
URI_MATCHER.addURI("media", "*/audio/media/#/genres/#", AUDIO_MEDIA_ID_GENRES_ID);
URI_MATCHER.addURI("media", "*/audio/media/#/playlists", AUDIO_MEDIA_ID_PLAYLISTS);
URI_MATCHER.addURI("media", "*/audio/media/#/playlists/#", AUDIO_MEDIA_ID_PLAYLISTS_ID);
URI_MATCHER.addURI("media", "*/audio/genres", AUDIO_GENRES);
URI_MATCHER.addURI("media", "*/audio/genres/#", AUDIO_GENRES_ID);
URI_MATCHER.addURI("media", "*/audio/genres/#/members", AUDIO_GENRES_ID_MEMBERS);
URI_MATCHER.addURI("media", "*/audio/genres/#/members/#", AUDIO_GENRES_ID_MEMBERS_ID);
URI_MATCHER.addURI("media", "*/audio/playlists", AUDIO_PLAYLISTS);
URI_MATCHER.addURI("media", "*/audio/playlists/#", AUDIO_PLAYLISTS_ID);
URI_MATCHER.addURI("media", "*/audio/playlists/#/members", AUDIO_PLAYLISTS_ID_MEMBERS);
URI_MATCHER.addURI("media", "*/audio/playlists/#/members/#", AUDIO_PLAYLISTS_ID_MEMBERS_ID);
URI_MATCHER.addURI("media", "*/audio/artists", AUDIO_ARTISTS);
URI_MATCHER.addURI("media", "*/audio/artists/#", AUDIO_ARTISTS_ID);
URI_MATCHER.addURI("media", "*/audio/artists/#/albums", AUDIO_ARTISTS_ID_ALBUMS);
URI_MATCHER.addURI("media", "*/audio/albums", AUDIO_ALBUMS);
URI_MATCHER.addURI("media", "*/audio/albums/#", AUDIO_ALBUMS_ID);
URI_MATCHER.addURI("media", "*/audio/albumart", AUDIO_ALBUMART);
URI_MATCHER.addURI("media", "*/audio/albumart/#", AUDIO_ALBUMART_ID);
URI_MATCHER.addURI("media", "*/audio/media/#/albumart", AUDIO_ALBUMART_FILE_ID);

URI_MATCHER.addURI("media", "*/video/media", VIDEO_MEDIA);
URI_MATCHER.addURI("media", "*/video/media/#", VIDEO_MEDIA_ID);
URI_MATCHER.addURI("media", "*/video/thumbnails", VIDEO_THUMBNAILS);
URI_MATCHER.addURI("media", "*/video/thumbnails/#", VIDEO_THUMBNAILS_ID);

URI_MATCHER.addURI("media", "*/media_scanner", MEDIA_SCANNER);

URI_MATCHER.addURI("media", "*/fs_id", FS_ID);
URI_MATCHER.addURI("media", "*", VOLUMES_ID);
URI_MATCHER.addURI("media", null, VOLUMES);


URI_MATCHER.addURI("media", "*/fs_id", FS_ID);
发现是常数
private static final int FS_ID = 600;

作用不详...
a220315410 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chenmeimei_8899 的回复:]

这是一个uri,是android规定的一组规则,具体的规则看一下android官方对uri的解释,content://media/external/fs_id:这个应该是读取一个共享的数据,是以content provider的形式提供的。
[/Quote]
不好意思,能提供具体点的资料么?google提供的reference中找不到这个家伙。
freshui 2011-06-28
  • 打赏
  • 举报
回复
Content://media/external/fs_id
media:媒体介质
external:外部的
fs_id:文件系统id

从字面意思看,这个应该就是查询你有几个外部磁盘吧,然后获取磁盘的id以供后继使用
FLYUP_CHEN 2011-06-28
  • 打赏
  • 举报
回复
这是一个uri,是android规定的一组规则,具体的规则看一下android官方对uri的解释,content://media/external/fs_id:这个应该是读取一个共享的数据,是以content provider的形式提供的。

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧