Android 如何在API低于29的情况下从手机获取图像
我为Android开发图像库应用程序(min sdk 23,target sdk 29)。我正试图从手机上获取照片列表。代码如下:Android 如何在API低于29的情况下从手机获取图像,android,kotlin,android-contentresolver,mediastore,Android,Kotlin,Android Contentresolver,Mediastore,我为Android开发图像库应用程序(min sdk 23,target sdk 29)。我正试图从手机上获取照片列表。代码如下: val list:MutableList=mutableListOf() val投影=阵列( MediaStore.Images.Media.\u ID, MediaStore.Images.Media.DATE_拍摄, MediaStore.Images.Media.ORIENTATION, MediaStore.Images.Media.SIZE ) val q
val list:MutableList=mutableListOf()
val投影=阵列(
MediaStore.Images.Media.\u ID,
MediaStore.Images.Media.DATE_拍摄,
MediaStore.Images.Media.ORIENTATION,
MediaStore.Images.Media.SIZE
)
val query=contentResolver?.query(
MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI,
投影,
无效的
无效的
MediaStore.Images.Media.DATE_take+“DESC”
)
查询?使用{cursor->
如果(cursor.count!=0){
val ididex=cursor.getColumnIndex(MediaStore.Images.Media.\u ID)
val sizeIndex=cursor.getColumnIndex(MediaStore.Images.Media.SIZE)
while(cursor.moveToNext()){
val id=cursor.getLong(idIndex)
val size=cursor.getInt(sizeIndex)
val contentUri:Uri=ContentUris.withAppendedId(
MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI,
身份证件
)
val photo=photo(contentUri,大小)
列表。添加(照片)
}
}
}
但Android Studio告诉我,一些MediaStore字段需要API级别29+。(例如,MediaStore.Images.Media.DATE_take、MediaStore.Images.Media.ORIENTATION、MediaStore.Images.Media.DATA等)。
所以我的问题是,我应该如何获得29以下API上的图像列表?
studio也对contentResolver.loadThumbnail()
方法作了同样的描述
接下来的问题是:在安卓系统中是否可以检索相册列表?或者我应该获得所有图像的列表,然后浏览它并挑选相册?试试这个,即使使用API 29也可以:
private fun getAllImages(activity: Activity): ArrayList<Photo>? {
var cursor: Cursor? = null
var i = 0
val arrayList: ArrayList<Photo> = ArrayList()
if (cursor == null) {
val resolver = activity.contentResolver
cursor = resolver.query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null,
null,
null,
null
)
if (cursor != null) {
while (i < cursor.count) {
cursor.moveToPosition(i)
val fieldIndex: Int = cursor.getColumnIndex(MediaStore.Images.Media._ID)
val id: Long = cursor.getLong(fieldIndex)
val imageUri =
ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id)
arrayList.add(Photo("", imageUri))
i++
}
cursor.close()
}
}
return arrayList
}
data class Photo(var name: String, var uri: Uri)
将此权限添加到您的清单中,并确保已授予该权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
我在获取照片列表方面没有问题。我想知道如何获得照片缩略图(没有滑动),和相册列表。MediaStore.Images.Media.BUCKET_名称在29以下的API中不可用。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>