我正在编写一个能够编辑 MP3 歌曲流派的 Android 音乐播放器。
我遵循的程序是:
- 编辑 MP3 文件本身的流派标签
- 更新 SqlLite MediaStore.Audio.Genres 表以反映更改(我不想为 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
为什么上面的查询返回一个有效的条目,但删除失败???