【问题标题】:Android: deleting entries from MediaStore.Audio.Genres.Members tableAndroid:从 MediaStore.Audio.Genres.Members 表中删除条目
【发布时间】:2012-12-18 11:36:05
【问题描述】:

我正在编写一个能够编辑 MP3 歌曲流派的 Android 音乐播放器。

我遵循的程序是:

  1. 在 MP3 文件本身中编辑流派标签
  2. 更新 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却失败了???

【问题讨论】:

标签: android mediastore


【解决方案1】:

编辑表格没有意义。安卓会自动更新它在你标记的音乐上找到的内容。为什么不从 mp3 的角度来看问题呢?向用户展示流派列表,提供替换功能,然后使用新流派更新曲目,

【讨论】:

  • 你试过了吗?因为我不认为 Android 正在更新 Genre 平板电脑。流派在android中真的是一团糟。据我所知,我有很多空流派,当我在 MP3 ID3TAG 中更新流派标签时,它不会刷新 MediaStore 中的流派(曲目名称、专辑或艺术家的其他更改会更新它)
【解决方案2】:

也许你不再需要这个,但如果你需要,我可以建议我使用的解决方案: 当您显示流派时,只需检查每个流派的曲目数,如果为 0,则不显示该流派。

【讨论】:

    【解决方案3】:

    您宁愿使用 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);
    

    【讨论】:

      猜你喜欢
      • 2013-06-27
      • 2011-12-20
      • 1970-01-01
      • 2013-04-24
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多