当我选择默认铃声时,我得到一个路径为content://settings/system/ringtone的Uri。因此,不存在以整数结尾的路径,就像返回通常的rintone一样(例如,content://media/internal/audio/media/38)。
我现在如何从这个默认铃声中获取资源id?任何解析都是不可能的,因为没有任何整数标识。
发布于 2015-02-07 11:03:45
如果您检查设置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;
}https://stackoverflow.com/questions/24332547
复制相似问题