从content:// settings / system / ringtone获取资源ID?

时间:2014-06-20 17:20:39

标签: android uri ringtone

当我选择默认铃声时,我会收到路径为Uri的{​​{1}}。所以没有以integer为结尾的路径,就像返回通常的rintone一样(例如,content://settings/system/ringtone)。

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

1 个答案:

答案 0 :(得分:3)

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

自:

content://settings/system/ringtone

要:

content://media/internal/audio/media/38

所以你需要编写一个转换器来实现它:

   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;
    }