【问题标题】:Loading a Cursor in Android with info from the MediaStore.Audio provider使用来自 MediaStore.Audio 提供程序的信息在 Android 中加载光标
【发布时间】:2011-03-28 22:48:25
【问题描述】:

我正在尝试将一些参数从默认的 Content Provider MediaStore.Audio 加载到 Cursor 中,但是在调试代码时它仅在 managedQuery 中停止运行。该方法不会比 managedQuery 运行得更远。这是带有查询的代码:

Uri exAudioUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

String[] projection = new String[] {
    MediaStore.Audio.Media._ID,
    MediaStore.Audio.Media.DISPLAY_NAME,
    MediaStore.Audio.Media.DATA,
    MediaStore.Audio.Media._COUNT,
};
Cursor cExAudio = managedQuery(exAudioUri, projection, null, null, MediaStore.Audio.Media.DISPLAY_NAME + " DESC");

我在文档中读到此方法已弃用且不应使用,但它是我使用的 API 级别的唯一选择。

【问题讨论】:

  • 请您确认是否返回 managedQuery 是否返回 null。
  • 刚刚检查,在调试期间managedQuery返回以下异常:android.database.sqlite.SQLiteException:没有这样的列:_count:,编译时:SELECT _id,_display_name,_data,_count FROM audio ORDER BY _display_name DESC

标签: java android cursor android-contentprovider


【解决方案1】:

如果你删除 来自String[] projectionMediaStore.Audio.Media._COUNT 应该可以解决您的问题。

基本上没有名为“_COUNT”的列

String[] projection = new String[] {
    MediaStore.Audio.Media._ID,
    MediaStore.Audio.Media.DISPLAY_NAME,
    MediaStore.Audio.Media.DATA
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多