2014-06-20 4 views
2

기본 벨소리를 선택할 때 경로가 content://settings/system/ringtoneUri이 표시됩니다. 따라서 일반 rintone을 반환 할 때처럼 정수로 끝나는 경로가 없습니다 (예 : content://media/internal/audio/media/38).content : // settings/system/ringtone에서 자원 ID를 가져 옵니까?

이제이 기본 벨소리에서 리소스 ID를 어떻게 얻을 수 있습니까? 정수 식별이 없으므로 구문 분석이 불가능합니다.

답변

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