我正在研究一个小示例,我在sd卡中搜索特定的文件类型(.pdf和.doc),然后我将其列出给用户,他们可以在其中删除它们,但是不幸的是,即使我尝试了删除文件也无法正常工作给用户FileProvider
尝试以下内容:
file.delete()
总是返回false
val uri = FileProvider.getUriForFile(context, "${context.packageName}.provider", file)
context.contentResolver.delete(uri, null, null)
然后当我检查file.exists()
时仍返回true
。
我调试了代码,并调用了FileProvider.delete
方法,但它返回了0
,即文件删除为false
。
@Override
public int delete(@NonNull Uri uri, @Nullable String selection,
@Nullable String[] selectionArgs) {
// ContentProvider has already checked granted permissions
final File file = mStrategy.getFileForUri(uri);
return file.delete() ? 1 : 0;
}
我相信这是由于新的Android api限制,但我在文档中找不到关于此的任何内容。
在Android 9上测试过
知道如何解决这个问题并获得删除文件的方法吗?
最终FileProvider使用您的File实例的经典文件路径。因此file.getAbsoluthePath()。
但是micro sd卡上的文件不能以经典方式写入,因此无法删除。
更新:FileProvider不能用于micro sd卡上的文件。您甚至无法获得该文件的uri。
使用Storage Access Framework获得对可移动Micro SD卡的永久访问权。然后,您可以完成所有操作。