2011-02-04 2 views
3

내 앱에서 SD 카드에 저장 한 사운드에서 벨소리를 설정하려고합니다. 이 글에서 발견 할 수있는 모든 게시물을 살펴본 후에 나는 내가 가깝고 URI의 권리를 정의하지 않는다고 믿는다.Android : SD 카드에서 사운드를 벨소리로 설정

 File ringPath = new File(path, filename); 

     ContentValues values = new ContentValues(); 
     values.put(MediaStore.MediaColumns.DATA, ringPath.getAbsolutePath()); 
     values.put(MediaStore.MediaColumns.TITLE, "temptitle"); 
     values.put(MediaStore.MediaColumns.SIZE, ringPath.length()); 
     values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/ogg"); 
     values.put(MediaStore.Audio.Media.ARTIST, "tempartist"); 
     values.put(MediaStore.Audio.Media.IS_RINGTONE, true); 

     uri = Uri.fromFile(ringPath); 
     RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, uri); 

은 일반적으로 URI 더 같이 정의된다 :

Uri uri = MediaStore.Audio.Media.getContentUriForPath(ringPath.getAbsolutePath()); 
Uri newUri = main.getContentResolver().insert(uri, values); 

그러나 나는 확실히 그 모두에 포인트를 보지 않았고, 그들이 가능성이있는 사람이 아닙니까 것을 (나에게 오히려 불쾌한 오류를 준 내 현재보다 나쁜). 그게 꼭 필요한 방법이라고 확신하지만 코드에있는 uri가 실제로 올바른 경로를 반환합니다 (그리고 다른 하나는 오용으로 인해 부여 된 것입니다). 작업. 솔직히 말해서 경로를 지정하는 대신에 어쨌든 URI를 사용해야한다는 점을 알지 못합니다.

아무도 나에게 약간의 설명을 주거나 어딘가에서 나를 연결할 수 있다면, 나는 이것을 정말로 이해할 수 있고이 문제를 해결할 수있어서 매우 감사 할 것입니다.

+0

응용 프로그램에 부여 된 사용 권한은 무엇입니까? 앱에 SD 카드에 대한 액세스 권한이 있는지 확인해야합니다. – SpencerElliott

+0

외부 저장소에 쓸 수있는 권한을 부여했으며 SD 카드에 사운드를 저장할 수 있으므로 제대로 설정되었음을 알고 있습니다. 나는 카드에서 읽는 데 필요한 모든 권한이 있다고 생각하지 않으며, 확인을 위해 단지 두 번 확인했습니다. – Peacecraft

답변

0

이봐 난 파일이 정말이 라인 atfer있는 경우 내가 체크 시작하는 당신을 추천 할 것입니다 path.so 당신의 확률값을받지 못하고 있다고 생각


File ringPath = new File(path, filename); 

코드를 사용 :


boolean b=ringPath.exists(); 

내가 ur 코드에서 볼 수있는 오류가 없다고 생각한 후 uri frm it.than을 얻을 수 있습니다.

+0

이전에 그 수표를 사용했는지 확인하기 위해 이전에 수표를 사용했으나 다시했으나 실제로 반환합니다. 잠시 땜질 후에 소리가 벨소리 목록에 나타나고 작동하지만 처음에는 벨소리로 설정하려고 할 때 어떤 식 으로든 실패합니다. 대신 기본 벨소리로 바꿉니다. 최악의 시나리오 내가 그런 식으로 사용할 수는 있지만 사용자가 요청할 때 벨소리를 완전히 설정하는 것이 좋습니다. – Peacecraft

0

메뉴 -> 설정 -> 응용 프로그램 -> 개발로 이동하여 전화 디버깅을 종료 한 다음 확인란을 선택 취소하십시오. 잘 됐어.