[英]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.