使用FileProvider删除文件

问题描述 投票:0回答:1

我正在研究一个小示例,我在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上测试过

知道如何解决这个问题并获得删除文件的方法吗?

android file delete-file android-fileprovider
1个回答
0
投票

最终FileProvider使用您的File实例的经典文件路径。因此file.getAbsoluthePath()。

但是micro sd卡上的文件不能以经典方式写入,因此无法删除。

更新:FileProvider不能用于micro sd卡上的文件。您甚至无法获得该文件的uri。

使用Storage Access Framework获得对可移动Micro SD卡的永久访问权。然后,您可以完成所有操作。

© www.soinside.com 2019 - 2024. All rights reserved.