当我选择默认铃声时,我会收到路径为Uri
的{{1}}。所以没有以integer为结尾的路径,就像返回通常的rintone一样(例如,content://settings/system/ringtone
)。
我现在如何从此默认铃声中获取资源ID?任何解析都是不可能的,因为没有任何整数标识。
答案 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;
}