2014-02-25 7 views
2

를 미디어 스토어 MediaStore, 나는 삽입 오디오 앨범은 내가 미디어 스토어 MediaStore에서 앨범을 삽입하는 방법에 대한 정보를 찾을 수 없습니다

Uri uri = contentResolver.insert(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, albumValues); 

를 사용하여 시도하지만 Invalid uri 말하는 예외를 얻을. 이 URI는 앨범을 검색하는 데는 잘 작동하지만 삽입 할 때 사용할 수는 없습니다.

ContentResolver contentResolver = getActivity().getContentResolver(); 
ContentValues albumValues = new ContentValues(); 
albumValues.put(Audio.Albums.ALBUM, mAlbumEditText.getText().toString()); 
albumValues.put(Audio.Albums.ARTIST, mArtistEditText.getText().toString()); 
int trackNo = 10; 
albumValues.put(Audio.Albums.NUMBER_OF_SONGS, trackNo); 
Uri uri = contentResolver.insert(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, albumValues); 

오류 로그 : 여기

는 코드의 나머지 부분입니다 02-24 22:38:19.876: E/AndroidRuntime(5379): java.lang.UnsupportedOperationException: Invalid URI content://media/external/audio/albums

+0

나머지 ContentValues를 게시 할 수 있습니까? 중요한 것을 놓치고 있는지 확인하는 데 도움이 될 것입니다. –

+0

예외는 'UnsupportedOperationException'입니까? 어느 쪽이든, 오류를 보여주는 로그를 게시하십시오. – Geobits

+0

내가 존재하지 않는 무언가로 URI를 변경하면, 'Unknown uri'라는 또 다른 예외가 생겨 URI가 존재하게되고, 또한'.query (...) '를 사용할 수 있습니다. 내 추측에 의하면 앨범은 다른 방법으로 삽입되지만 그것에 관한 문서는 찾을 수 없다. – Jelly

답변

1

당신은 존재하지 않는 경우 폴더를 생성해야하고 URI에 그것을 추가 할 수 있습니다 .

//Create album folder if it doesn't exist 
mImageDir = new File(Environment.getExternalStoragePublicDirectory(
      Environment.DIRECTORY_PICTURES), "MyAlbumName"); 
//Retrieve the path with the folder/filename concatenated 
mImageFilePath = new File(mImageDir, "NameOfImage").getAbsolutePath(); 

//Create new content values 
ContentValues values = new ContentValues(); 
values.put(MediaStore.Images.ImageColumns.DATA, mImageFilePath); 
//Add whatever other content values you need 
.... 
mUri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 

편집 :

당신은 ContentValues의 데이터 부분을 놓치고있어. 실제 파일 경로를 지정하며 필수 항목입니다.

mAudioDir = new File(Environment.getExternalStoragePublicDirectory(
       Environment.DIRECTORY_MUSIC), "MyNewAlbumName"); 
mAudioFilePath = new File(mAudioDir, "myNewAudioFile.mp3").getAbsolutePath(); 

//This part is what you're missing 
albumValues.put(MediaStore.Audio.AudioColumns.DATA, mAudioFilePath); 
+1

미안하지만, 나는 음악 앨범을 언급하고 있었다. – Jelly

+0

내가 제안한 것을 추가했지만 여전히 작동하지 않습니다. 앨범에 여러 개의 노래가 있으므로 여러 개의 경로가있을 수 있기 때문에 DATA를 추가하는 것은 의미가 없습니다. 내가 이해하는 방법은 앨범 정보가있는 테이블이 있고 각 노래는 해당 테이블의 항목을 참조 할 수 있다는 것입니다. 미디어에 노래를 삽입 할 수 있지만 앨범에 앨범을 삽입 할 수 없습니다. – Jelly

+1

빈 앨범을 추가 할 수 없습니다. 노래를 삽입 할 때 앨범은 mp3 태그를 기반으로 자동으로 추가되어야합니다. 정확히 무엇을 성취하려고합니까? 빈 앨범을 추가 하시겠습니까? 최종 목표는 무엇입니까? –