【发布时间】:2012-12-18 11:36:05
【问题描述】:
我正在编写一个能够编辑 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
为什么上面的query返回了一个有效的entry,但是deletes却失败了???
【问题讨论】:
-
我在通过更新 mediastore.audio.genres.NAME 表来更改音频文件的流派名称时遇到问题,您找到解决方案了吗?
标签: android mediastore