如何解决Android Q 中没有相册._ID
我的代码使用来自 Uri MediaStore.Audio.Artists.Albums.getContentUri("external",id)的以下列查询专辑信息。
String[] cols = new String[] {
MediaStore.Audio.Albums._ID,MediaStore.Audio.Albums.ALBUM,MediaStore.Audio.Albums.NUMBER_OF_SONGS,MediaStore.Audio.Albums.NUMBER_OF_SONGS_FOR_ARTIST,MediaStore.Audio.Albums.ALBUM_ART
};
在低于 Android Q 的设备上运行,它可以工作。使用 Android Q,它会崩溃。 Android Q 中似乎没有专辑的 _id 列。 java.lang.IllegalArgumentException: 列 _id 无效 在 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:170) 在 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140) 在 android.content.ContentProviderProxy.query(ContentProviderNative.java:423) 在 android.content.ContentResolver.query(ContentResolver.java:951) 我该如何解决这个问题?当我的应用程序使用 CursorWrapper 时,它会在 _id 列上回复,如果没有这个应用程序会因另一个问题而崩溃。 java.lang.IllegalStateException: 无法从 CursorWindow 读取第 0 行,第 -1 列。在访问 Cursor 中的数据之前,请确保它已正确初始化。
因为 MyCursorHelper 读取 _id 列,如果没有提供这样的值,它将用 -1 初始化 mRowIDColumn。然后 getLong 将与列 -1 崩溃。
mRowIDColumn = cursorPresent ? cursor.getColumnIndex("_id") : -1;
long getId(int position) {
if (mDataValid && mCursor != null) {
if (mCursor.moveToPosition(position)) {
return mCursor.getLong(mRowIDColumn);
} else {
return 0;
}
} else {
return 0;
}
}
当我的应用程序回复此 CursorWrapper 时,我不知道如何用其他方法替换它。也许为列 _id 找到一个解决方法是一种更简单的方法?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。