[英]get genre_id and audio_id from audio_genres_map from mediastore
[英]Android: deleting entries from MediaStore.Audio.Genres.Members table
我正在編寫一個能夠編輯MP3歌曲類型的Android音樂播放器。
我要遵循的過程是:
我的研究表明,我需要修改MediaStore.Audio.Genres.Members表(即我用來獲取類型信息的表)。
我的問題是看似簡單的刪除操作無法正常工作。
注意:我不知道不要使用所示的硬編碼URI,但這只是測試代碼...
String uriStr = "content://media/external/audio/genres/2/members";
Uri uri = Uri.parse(uriStr);
// Query the table for the row with ID=5448
Cursor cursor = context.getContentResolver().query(uri, null, BaseColumns._ID + "=5448", null, null);
Log.v("Test", "Row count: " + cursor.getCount());
cursor.close();
// Try to delete row 5448
int rowsCount = context.getContentResolver().delete(uri, BaseColumns._ID + "=5448", null);
Log.v("Test", "Rows deleted: " + rowsCount);
// Try (again) to delete row 5448
rowsCount = mService.getContentResolver().delete(uri, BaseColumns._ID + "=?", new String[]{"5448"});
Log.v("Test", "Rows deleted: " + rowsCount);
// Query (again) the table for the row with ID=5448
Cursor cursor1 = mService.getContentResolver().query(uri, null, BaseColumns._ID + "=5448", null, null);
Log.v("Test", "Row count: " + cursor1.getCount());
cursor1.close();
上面代碼的日志是...
Row count: 1
Rows deleted: 0
Rows deleted: 0
Row count: 1
為什么上面的查詢返回一個有效的條目,但是刪除失敗?
編輯表格沒有任何意義。 android會自動使用您標記的音樂中的內容進行更新。 為什么不從mp3角度看問題呢? 向用戶顯示類型列表,提供替換功能,然后使用新類型更新曲目,
也許您不需要更多,但是如果您這樣做,我可以為我提供解決方案的建議:在顯示流派時,只需檢查每種流派具有的曲目數,如果為0,就不要顯示此流派。
您寧願使用AUDIO_ID列,而不要使用BaseColumns._ID,因為每次刪除行時都有可能更新行ID。
這是我在自己的應用中所做的工作(在Android 4.0.4上經過測試並可以正常工作):
context.getContentResolver().delete(MediaStore.Audio.Genres.Members.getContentUri(
"external", genreId), MediaStore.Audio.Genres.Members.AUDIO_ID + " = " + song.getId(), null);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.