Android 11 以上。我无法从 contentProvider 获取此列的有效值,有人有信息吗?以下是我的代码:
private static final String[] PROJECTION_30 = {
MediaStore.Files.FileColumns._ID,
MediaStore.MediaColumns.DATA,
MediaStore.MediaColumns.DISPLAY_NAME,
MediaStore.MediaColumns.MIME_TYPE,
MediaStore.MediaColumns.SIZE,
MediaStore.MediaColumns.WIDTH,
MediaStore.MediaColumns.HEIGHT,
MediaStore.MediaColumns.IS_FAVORITE};
CursorLoader(context, MediaStore.Files.getContentUri("external_primary"), PROJECTION_30, selection, selectionArgs, null);
fun fromCursor(cursor: Cursor): MediaModel {
try {
val id = cursor.getLong(cursor.getColumnIndex(MediaStore.Files.FileColumns._ID))
val mimeType = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.MIME_TYPE))
val size = cursor.getLong(cursor.getColumnIndex(MediaStore.MediaColumns.SIZE))
val width = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns.WIDTH))
val height = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns.HEIGHT))
val favorite = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
val index = cursor.getColumnIndex(MediaStore.MediaColumns.IS_FAVORITE)
if (index >= 0) {
cursor.getInt(index)
} else {
0
}
} else {
0
}
}
}
但是,最喜欢的结果是客场 0
我希望我能从 MediaStore 获得真正喜欢的价值
我认为这取决于制造商。我无法在 Oppo、小米等设备中获取最喜爱的媒体,但我可以在三星中获取最喜爱的媒体。我猜对于中国制造商的设备,他们使用数据库而不是 MediaStore 来管理收藏夹。