首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SAF删除拾取图像

使用SAF删除拾取图像
EN

Stack Overflow用户
提问于 2020-06-15 07:07:26
回答 1查看 77关注 0票数 0

在我的应用程序中,我想复制和删除选中的图像。我试着使用Intent.ACTION_GET_CONTENT,但它似乎不起作用。

你能告诉我,我应该用哪种旗帜来删除使用SAF获取的图像?

下面是我的代码,它不起作用:

//此函数为多个图像打开

代码语言:javascript
复制
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,我无法获得我需要删除照片的写作权限。

代码语言:javascript
复制
 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
            }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-15 14:24:36

终于找到答案了!如果有人需要:

代码语言:javascript
复制
  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中

代码语言:javascript
复制
val clipData = data?.clipData
if (clipData != null)
    for (i in 0 until clipData.itemCount) {
       val mUri = clipData.getItemAt(i).uri
       deleteFromUri(mUri)
     }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62383037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档