[英]How to delete a file using Storage Access Framework?
如何在 Android 中使用存储访问框架删除文件? 我在文档中找到了这种方法,但无法正常工作: DocumentsContract.deleteDocument(ContentResolver, Uri);
我可以在不询问用户要删除什么的情况下删除特定文件吗?
编辑:<\/strong>
我尝试使用 Uri.fromFile 获取文件 uri,但因空指针异常而失败。 我尝试使用 ACTION_OPEN_DOCUMENT 获取文件 uri,但它要求用户选择一个文件(我想自己指定文件)。 即使这样它也不起作用,给出异常并告诉我不支持删除。
我已经回答了您的问题,如果您有文档的 URI,并且文档的 Document.COLUMN_FLAGS 包含 SUPPORTS_DELETE,则可以删除该文档。 例如:
DocumentsContract.deleteDocument(getContentResolver(), uri);
参考: http : //developer.android.com/guide/topics/providers/document-provider.html一切顺利
使用应用程序上下文来调用上下文解析器。
DocumentsContract.deleteDocument(getApplicationContext().getContentResolver(),uri)
您首先需要 uri 的写入许可才能进行更改。
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).apply {
flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or
Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION or
Intent.FLAG_GRANT_WRITE_URI_PERMISSION
}
startActivityForResult(intent, OPEN_DIRECTORY_REQUEST_CODE)
如果您在活动中收到结果,您将能够对所选目录中的文件进行更改。 (对单个文件使用 Intent.ACTION_OPEN_DOCUMENT)。
如果您需要示例,可以在此处找到
如果它是您未经许可创建的文件,您可以将其删除,我知道。 这是代码,您可以将其放在一个块中并在需要时调用它。 还使用 str2 = uri.toString(); 保存每个 uri 然后共享首选项字符串。
Uri uri2 = Uri.parse(str2);
try{ DocumentsContract.deleteDocument(
getApplicationContext().getContentResolver(), uri2);
} catch (FileNotFoundException e) {}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.