首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否从content://settings/system/ringtone获取资源id?

是否从content://settings/system/ringtone获取资源id?
EN

Stack Overflow用户
提问于 2014-06-21 01:20:39
回答 1查看 2K关注 0票数 2

当我选择默认铃声时,我得到一个路径为content://settings/system/ringtoneUri。因此,不存在以整数结尾的路径,就像返回通常的rintone一样(例如,content://media/internal/audio/media/38)。

我现在如何从这个默认铃声中获取资源id?任何解析都是不可能的,因为没有任何整数标识。

EN

回答 1

Stack Overflow用户

发布于 2015-02-07 11:03:45

如果您检查设置db,您会发现保存到设置db的内容是media uri。这意味着下面的uri实际上是到媒体uri的映射。

发自:

代码语言:javascript
复制
content://settings/system/ringtone

至:

代码语言:javascript
复制
content://media/internal/audio/media/38

所以你需要写一个转换器来做这件事:

代码语言:javascript
复制
   public Uri uriMap(Uri uri) {
        Uri mediaUri = uri;
        if(uri.getAuthority().equals(Settings.AUTHORITY)) {
            Cursor c = null;
            try {
                c = getContentResolver().query(uri,new String[]{
                        Settings.NameValueTable.VALUE},null,null,null);
                if(c != null && c.moveToFirst()) {
                    String val = c.getString(0);
                    mediaUri = Uri.parse(val);
                }
            } catch (Exception e) {
            }finally {
                c.close();
            }
        }
        Log.e(TAG,"" + uri + "->" + mediaUri);
        return mediaUri;
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24332547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档