微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

EACCES权限被拒绝也适用于我的应用创建的文件?

如何解决EACCES权限被拒绝也适用于我的应用创建的文件?

前提
很快,我将不得不将我的应用从 android 10 更新到 android 11。
compileSdkVersion 30
targetSdkVersion 30

我在以前的版本中已经有了
android: requestLegacyExternalStorage = "true"(文档说这将在 android 11 上被忽略)
我在之前的版本中已经有了 FileProvider 定义,所以我保持原样。
在 ANDROID 10 上一切正常。

现在, 从在模拟器 (Android 11) 上进行的测试来看,即使我的目标是 SDK 30,我的应用程序仍然能够在“下载/我的应用程序名称”中创建“我的自定义目录”而不会出现问题。 .. 但这不是被阻止了吗?

既然它允许我这样做,那么为什么 EACCES(权限被拒绝) 会在我尝试读取我创建的同一(外部)目录中的文件时给我一个错误?自己的应用程序?
文件夹之前甚至不存在,应用创建了它 ...阻止它读取其中的静态文件有什么意义? 这不是矛盾吗?

您是如何适应这些限制的,我认为鉴于我的实际结果仅部分采用了这些限制……我缺少什么?
谁能向我解释发生了什么?

例如,这似乎仍然适用于 Android11:

 String PublicDirAccess = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString();
        //create new file directory object
        directory = new File(PublicDirAccess + "/" + UtiGlobal.getAppTitle(MyApp.getContext()) + "/");
        // if no directory exists,create new directory
        if (!directory.exists())
        {
            directory.mkdir();
            //MediaScannerConnection.scanFile(MyApp.getContext(),new String[] {directory.getAbsolutePath()},null,null);
            forceMediaScanner(MyApp.getContext(),directory);
        }

但是阅读文档应该不起作用......它不应该创建文件夹......或者不?

但是如果我尝试像这样读取其中的文件

 BufferedReader reader = new BufferedReader(new InputStreamReader(mystreamInDownloadFolder));
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null)
        {
          sb.append(line).append("\n");
        }
        reader.close();

        StringOut= sb.toString();

它给了我错误EACCES(权限被拒绝)

但是如果它让我创建文件夹,为什么它会阻止我阅读它? ... 应用程序可以在由其代码创建的文件夹中继续读取不是更正确吗?即使它在外部目录中。

我的问题很简单:
这是正常的吗?我非常清楚不应再允许这样做,但我不明白为什么会创建该文件夹。

添加了如何更简单地复制问题:

1) 在 /storage/emulated/0/Download/Test 中创建一个文件
2) 在应用程序中创建 test.txt 文件
3) 通过usb PC、NETWORK或Android使用X-plore、Es-explorer等修改文件内容

您刚刚失去访问该文件 ...所以这将是不可能通过转移我的应用程序备份,CSV,文本文件一个设备到另一个生成文件? ...但这正常吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。