음악 플레이어의 재생 목록에 추가되는 ContentResolver
을 사용하여 Playlist
을 새로 만들려고하지만 코드가 실행되면 재생 목록에 삽입하면 null이 반환됩니다. Uri
) 음악 플레이어의 재생 목록을 확인할 때 새로운 Playlist
항목이 없습니다. insert()
이 null을 반환하는 이유는 정확하게 재생 목록을 만들지 않았기 때문입니다. 누군가 내 코드가 작동하지 않는다면 새로운 재생 목록을 동적으로 만드는 방법을 명확히 할 수 있습니까?ContentResolver를 사용하여 새 재생 목록을 만드는 방법
ContentResolver resolver = getActivity().getContentResolver();
Uri playlists = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI;
Log.d(A.TAG, "Checking for existing playlist for " + chart.getName());
Cursor c = resolver.query(playlists, new String[] {"*"}, null, null, null);
long playlistId = 0;
c.moveToFirst();
do {
String plname = c.getString(c.getColumnIndex(MediaStore.Audio.Playlists.NAME));
if (plname.equalsIgnoreCase(chart.getName())) {
playlistId = c.getLong(c.getColumnIndex(MediaStore.Audio.Playlists._ID));
break;
}
} while (c.moveToNext());
c.close();
if (playlistId!=0) {
Uri deleteUri = ContentUris.withAppendedId(playlists, playlistId);
Log.d(A.TAG, "REMOVING Existing Playlist: " + playlistId);
// delete the playlist
resolver.delete(deleteUri, null, null);
}
Log.d(A.TAG, "CREATING PLAYLIST: " + chart.getName());
ContentValues v = new ContentValues();
v.put(MediaStore.Audio.Playlists.NAME, chart.getName());
v.put(MediaStore.Audio.Playlists.DATE_MODIFIED, System.currentTimeMillis());
Uri newpl = resolver.insert(playlists, v);
Log.d(A.TAG, "Added PlayLIst: " + newpl);
Uri insUri = Uri.withAppendedPath(newpl, MediaStore.Audio.Playlists.Members.CONTENT_DIRECTORY);
int order = 1;
Log.d(A.TAG, "Playlist Members Url: " + insUri);
c = getContentManager().queryWhere(getActivity(), Song.class, Song.Fields.LIBRARYID + " != 0 and " + Song.Fields.CHARTID + " = " + chart.getId(), (String[])null);
if (c.moveToFirst()) {
Log.d(A.TAG, "Adding Songs to PlayList **");
do {
long id = c.getLong(c.getColumnIndex(Song.Fields.LIBRARYID));
ContentValues cv = new ContentValues();
cv.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, order++);
cv.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, id);
Uri u = resolver.insert(insUri, cv);
Log.d(A.TAG, "Added Playlist Item: " + u + " for AUDIO_ID " + id);
} while (c.moveToNext());
}
c.close();
UPDATE가 ... (내 검색에서 나는 재생 목록을 조회하는 여러 가지 방법을 발견했지만, 아무것도 실제로 새로 생성하지 않음) 여기
내 코드의를 : 부분적으로 해결 **
위 코드는 4.0.3
에 새 재생 목록을 올바르게 추가하지만 2.3
에는 재생 목록을 올바르게 추가하지 않습니다. 4.0.3
의 유일한 문제는 DATE_MODIFIED
이 재생 목록에 설정되어 있고 재생 목록 항목에 PLAY_ORDER
이 설정되어 있는지 확인해야한다는 것입니다.
나는 여전히 2.x에서의 재생 목록을 생성하지 왜 아무 생각이 없다, 그래서 누군가가 그것에 대한 어떤 생각을 가지고 있다면, 나는 알고 싶습니다.
감사 @MarkG. 나는 결국이 일을 얻었다. 내 2.x 장치에서 작동하지 않는 이유는 miui가 실행 중이었기 때문입니다. miui이 표준 재생 목록 콘텐츠 제공 업체를 사용하지 않는 것 같습니다. 시아 노겐 모드로 장치를 다시 채웠을 때 모두 작동했습니다. – stuckless
이 줄에서 앱이 다운 됨 mPlaylistId = c.getInt (c.getColumnIndex (MediaStore.Audio.Playlists._ID)); –
은 신경 끄시 고 난 그냥 커서 C = mCR.query (MURI, PROJECTION_PLAYLIST, NULL, NULL, MediaStore.Audio.Playlists.DATE_MODIFIED)를 확인하기 위해, 내 자신의 필요에 따라 변경; if (c! = null) { \t c.moveToLast(); –