在我的应用中,我的一项活动有一个菜单选项,该菜单选项打开图库意图并允许用户选择图像。在onActivityResult内部,我调用MediaStore.Images.Thumbnails.getThumbnail来检索所选图像的缩略图版本。但是,由于某种原因,它返回null。我已经设置了动态用户许可权,可以对外部存储设备进行读/写访问,并且我认为这是可行的(否则,Android会发出安全异常)。这是我的代码的摘录:
override fun onActivityResult(requestCode: Int, resultCode: Int, responseData: Intent?) {
when (requestCode) {
MENU_PICK_IMAGE -> if (resultCode == Activity.RESULT_OK) {
responseData?.let{ data ->
val contentUri = data.data as Uri
val uriPath = contentUri.pathSegments
val imageId = uriPath.get(uriPath.size-1)
val b = MediaStore.Images.Thumbnails.getThumbnail(contentResolver,imageId.toLong(),MediaStore.Images.Thumbnails.MINI_KIND,null)
........
}
}
}
目标SDK:28compileSdkVersion 28
我通过将getThumbnail方法移动到另一个方法(在OnActivityResult之外)解决了我的问题。我的假设是,在用户选择图像后,getThumbnail被阻止访问数据(因此仅返回null)。