当前位置: 首页 > 知识库问答 >
问题:

Android外部存储文件夹(通过SAF创建)及其内容被cleaner错误删除

羊毅庵
2023-03-14
private void triggerStorageAccessFramework() {

    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
    intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);

    startActivityForResult(intent, REQUEST_CODE_STORAGE_ACCESS);
}

@override protected void onActivityResult(int requestCode,int resultCode,@nullable Intent data){super.onActivityResult(requestCode,resultCode,data);if(requestCode==REQUEST_CODE_STORAGE_ACCESS){

        if (resultCode == Activity.RESULT_OK) {

            // Get Uri from Storage Access Framework.
            Uri treeUri = data.getData();

            // Persist access permissions.
            final int takeFlags = data.getFlags()
                    & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

            getContentResolver().takePersistableUriPermission(treeUri, takeFlags);


            DocumentFile pickedDir = DocumentFile.fromTreeUri(DocumentTreeActivity.this, treeUri);

           

            DocumentFile rootDir = pickedDir.findFile("Images");

            if (rootDir == null || !rootDir.exists()) {
                rootDir = pickedDir.createDirectory("Images");
             
            }

}}

我可以创建文件夹,我可以从/到文件夹读写文件。后来,在运行cleaner(内置,Redmi note 8 pro)应用程序后,文件夹和文件被删除。我怀疑文件夹是否检测为残留。有人帮忙吗。原谅我的英语不好

共有1个答案

马承
2023-03-14

我通过将文件夹的名称改为应用程序名称以外的名称来解决这个问题。我不知道背后的逻辑/诡计。但很管用。

 类似资料:
  • 问题内容: 我的开发电话正在运行。 在我的应用程序中,我试图在外部存储上创建一个文件夹,该文件夹将存储我的应用程序的调试信息。基本上,它将包含应用程序执行的所有命令,因此,当用户遇到问题时,我可以选择使它们从debug文件夹发送信息给我进行分析。 我首先尝试将文件写入文件夹,但发现创建文件夹时出错。最初,我使用,然后又移至也不起作用。 我有我的清单。 这是用于创建文件夹的代码: 这是我也尝试过的:

  • 我正在尝试打开一个现有文件,或者在外部使用SAF创建一个新文件,而用户不需要安装除我的apk之外的任何其他文件。 在我的Android10像素3上,ACTION_OPEN_DOCUMENT_TREE抛出一个异常,指示没有活动来处理这个(我想知道为什么会这样?)。 ACTION_OPEN_DOCUMENT和ACTION_CREATE_DOCUMENT似乎很合适。 但是,如果我: > 使用ACTION

  • 众所周知,谷歌颠覆了Android11的授权概念,并彻底改变了它。 我看了Android留档丛林,但没有找到答案的问题是否仍然可以在外部存储(名为 /storage/emulated/0/)的根目录中创建一个文件夹。如果是,如何? 我的应用在Android上写 临时解决办法可以是这样的: 但这并不理想。如果用户从Android10切换到Android11,那么就有一个大问题。我需要什么额外的代码才

  • 我使用php删除文件夹包含删除的帖子的图像。我正在使用下面的代码,我在网上找到的,做得很好。 我想知道当文件夹中有其他文件夹时,如何仅删除文件夹中的特定文件夹。 当我使用下面的代码时,如何做到这一点?使用:/dev/images/norman/8-

  • 问题内容: 我可以轻松删除子引用中的文件,但是如何从Firebase Storage中删除整个文件夹? 错误文件不存在。有任何想法吗? 问题答案: 长话短说,我们尚未实现递归(或文件夹)删除。 目前,我们建议将文件列表存储在另一个源(例如,实时数据库)中,并根据需要删除文件。您也可以在Firebase控制台(console.firebase.google.com)中执行这种删除。 将来,我们可能会

  • 为了清理一些磁盘空间,我将我的mp3收藏从内部存储移到外部存储。我的设备是根的,当时我是。 文件可以看到(和播放)从文件管理器,但我的音乐播放器没有看到他们。 看起来有趣的是移动后的文件权限。这是一个文件仍然在内部存储,但没有移动。 下面是几个被移到外部存储的文件: 将它们移动到外部存储似乎更改了权限。不幸的是,不会影响实际的文件权限: 我尝试将文件移回内部存储以更改那里的权限。直到我将文件移回外