在我的应用程序中,我想复制和删除选中的图像。我试着使用Intent.ACTION_GET_CONTENT,但它似乎不起作用。
你能告诉我,我应该用哪种旗帜来删除使用SAF获取的图像?
下面是我的代码,它不起作用:
//此函数为多个图像打开
private fun openForImages(){
val intent = Intent()
intent.setType("image/*")
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setAction(Intent.ACTION_GET_CONTENT)
startActivityForResult(Intent.createChooser(intent, "Select Picture"), OPEN_IMAFGES_REQUEST_CODE)
}在这里,onActivityResult,我无法获得我需要删除照片的写作权限。
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(requestCode == OPEN_IMAFGES_REQUEST_CODE && resultCode == Activity.RESULT_OK){
val clipData = data?.clipData ?: return
for(i in 0 until clipData.itemCount){
val mUri = clipData.getItemAt(i).uri
val docFile = DocumentFile.fromSingleUri(this, mUri)
Log.d(TAG, "onActivityResult: ${docFile?.name}, canWrite=${docFile?.canWrite()}") // canWrite returns false
docFile?.delete() // this is not working
}
}
}发布于 2020-06-15 14:24:36
终于找到答案了!如果有人需要:
val intent = Intent()
intent.setType("image/*")
intent.setAction(Intent.ACTION_OPEN_DOCUMENT).apply {
flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or
Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION or
Intent.FLAG_GRANT_WRITE_URI_PERMISSION
}
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
startActivityForResult(
Intent.createChooser(intent, "Select Picture"),
OPEN_IMAFGES_REQUEST_CODE
)在onActivityResult中
val clipData = data?.clipData
if (clipData != null)
for (i in 0 until clipData.itemCount) {
val mUri = clipData.getItemAt(i).uri
deleteFromUri(mUri)
}
}https://stackoverflow.com/questions/62383037
复制相似问题