首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

即使在允许MANAGE_EXTERNAL_STORAGE之后,我也无法删除安卓11表单内部存储中的文件夹

基础概念

在安卓系统中,MANAGE_EXTERNAL_STORAGE权限允许应用访问和管理设备上的外部存储,包括SD卡和其他可移除的存储介质。然而,安卓11引入了更严格的存储访问控制,尤其是对于应用私有目录和共享存储的访问。

相关优势

  • 权限管理:通过精细的权限控制,系统能够更好地保护用户数据的安全性和隐私性。
  • 存储优化:新的存储模型鼓励开发者使用更高效的数据存储方式,减少对设备的存储压力。

类型

  • 内部存储:每个应用都有自己的内部存储空间,用于存储应用私有的文件。
  • 外部存储:包括SD卡和其他可移除存储,所有应用都可以访问,但需要相应的权限。

应用场景

  • 文件管理应用:需要访问和管理设备上的文件和文件夹。
  • 备份和恢复工具:需要读取和写入设备上的数据。

问题原因

即使你已经请求并获得了MANAGE_EXTERNAL_STORAGE权限,安卓11仍然限制了对某些系统文件夹的访问,特别是应用的内部存储空间。这是因为系统希望保护应用的私有数据不被其他应用随意修改。

解决方法

  1. 检查权限:确保你的应用已经正确请求并获得了MANAGE_EXTERNAL_STORAGE权限。
代码语言:txt
复制
if (ContextCompat.checkSelfPermission(this, Manifest.permission.MANAGE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
    // 权限已授予
} else {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.MANAGE_EXTERNAL_STORAGE}, REQUEST_CODE);
}
  1. 使用系统API:对于删除文件夹的操作,可以使用系统提供的API来确保操作的安全性和合法性。
代码语言:txt
复制
File directory = new File(getFilesDir(), "your_folder_name");
if (directory.exists() && directory.isDirectory()) {
    deleteDirectory(directory);
}

private boolean deleteDirectory(File directoryToBeDeleted) {
    File[] allContents = directoryToBeDeleted.listFiles();
    if (allContents != null) {
        for (File file : allContents) {
            deleteDirectory(file);
        }
    }
    return directoryToBeDeleted.delete();
}
  1. 考虑使用Storage Access Framework (SAF):对于需要访问共享存储的情况,可以考虑使用SAF,它提供了一种更安全的方式来访问文件。
代码语言:txt
复制
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE);

参考链接

通过以上方法,你应该能够更好地管理和删除安卓11设备上的文件夹。如果问题依然存在,建议检查是否有其他系统级别的限制或者更新应用到最新版本。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 11 中的存储机制更新

在 Android 10 中,我们调整了存储权限的工作方式,仅为应用提供其所需的访问权限。这也是在鼓励应用在指定目录下进行文件存储以限制文件混乱。当应用被卸载后,这些相关的目录也会被删除。...在 Android 10 中,应用在对每一个文件请求编辑或删除时都必须得到用户的确认。而在 Android 11 中,应用可以一次请求修改或者删除多个媒体文件。...在 Android 11 中,将不再允许用户授权访问 Downloads 的根目录、每个可用 SD 卡的根目录以及其它应用的目录。...但是获得这个权限的应用还是无法访问其他应用的应用专属目录 (app-specific directory),无论是外部存储还是内部存储。 我们希望继续允许一些确实有广泛访问外部存储文件需求的应用。...在 Android 11 中,已获得 MANAGE_EXTERNAL_STORAGE 权限的应用,可以将用户引导至系统设置页面,让用户选择是否允许该应用 "访问所有文件" (All Files Access

3.1K11

Android 11 开发者常见问题: 存储 | FAQ・第二期

我们在 Android 10 中首次引入了 "分区存储" 的概念,旨在保护应用和用户数据并减少文件混乱。自此之后我们收到了开发者们的宝贵建议,这些建议有助于我们对该功能的持续优化,非常感谢大家!...因此,在 Android 11 上,拥有可读取外部存储权限的应用,均可在分区存储环境中通过文件路径访问文件。...得益于系统为每个媒体存储文件赋予了应用属性,应用不需要有存储权限也可以读写到它们最初提供给媒体存储的文件。 Data Column 弃用之后,有没有对此功能的其他使用建议?...在 Android 10 上,位于分区存储环境中的应用无法通过文件路径访问文件。为了与这一设计保持一致,我们随后废弃了 DATA column。...preserveLegacyExternalStorage 标记允许应用在升级系统时保留原有存储权限,即使是升级至 Android 11。

1.1K10
  • Android 分区存储常见问题解答

    ⚠️ 如果应用被卸载,或者是第一次在 Android 11 上安装,那么就无法使用旧的存储访问方式。此标记仅适用于进一步帮助设备从传统存储升级到分区存储。...Q: 我想保存非媒体文件,但我不想在卸载我的应用时删除它们。我需要使用 SAF 吗? A: 也许需要。 如果这些文件允许在应用外打开而无需通过您的应用,那么系统文件选择器是较好的选择。...这将使用户可以保留这些数据,即使在卸载应用时亦是如此。 △ 上图为拥有 "脆弱用户数据" 应用的卸载对话框。对话框中包含了一个复选框,用于指示系统是否应该保留应用数据。...Q: 我可以将非媒体文件放置于其他文件夹中 (例如 Downloads 文件夹),而无需任何权限。这是一个 Bug 吗? A: 不是。...也别忘了可以通过 ACTION_SEND 来与 其他应用共享数据 (或允许它们 与您的应用共享数据)!

    1.1K10

    安卓App太能乱来了!被曝一天扫你后台1.3万次:小米系统更新,一不小心扯出惊人真相

    晓查 乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI 安卓乱象,所有人都是知道的。 但你知道到底有多乱么? 现在,我们这些普通用户,也能定量分析检测了。 真相,可能比想象中还严重。...之前没见过也听过:这就是国内安卓生态的潜规则。 App在安装的时候,往往就会索取一大堆权限:摄像头、麦克风、通讯录、本地文件读写。...感觉每个权限都有可能出卖你的隐私,更难受的是,很多App不允许这些权限就无法使用。 就算逃过了对敏感权限的索取,你的手机依旧不让人省心,各种App后台偷听事件,层出不穷。...如此痼疾,非一朝一夕,有软件自身的原因,也有安卓系统的历史遗留问题。 就拿文件读取来说,iOS采用的是沙箱机制,任何App都只能管理自己的一亩三分地,对之外的存储空间没有读取权限。...最后,谷歌还是服软了,允许软件不使用沙箱机制。另外,Android在诞生之初也没有完善的推送管理机制。

    1.2K30

    Android 10(Q)11(R) 分区存储适配

    这些应用可能会在磁盘中存储大量文件,即使应用被卸载了还会依然存在。另外,这些应用还可能会读取其他应用的一些敏感文件数据。...为此,Google 终于下定决心在 Android 10 中引入了分区存储,对权限进行场景的细分,按需索取,并在 Android 11 中进行了进一步的调整。...Android 存储分区情况 Android 中存储可以分为两大类:私有存储和共享存储 私有存储 (Private Storage) : 每个应用在都拥有自己的私有目录,其它应用看不到,彼此也无法访问到该目录...应用可通过执行以下操作向用户请求名为所有文件访问权限的特殊应用访问权限: 在清单中声明 MANAGE_EXTERNAL_STORAGE 权限。...Q:我可以在媒体集文件夹下创建文档,就可以避开权限的问题了? A:官方文档上写了只能创建相应类型的媒体/文件,具体如何限制的,没有说明。

    2.4K30

    Android 11 应用兼容性适配,看这篇就够了

    2.1.2应用缓存 1 背景 在Android 11上,应用默认不能删除其他应用的缓存文件,即使申请了MANAGE_EXTERNAL_STORAGE权限。...如下图所示: 在系统设置的设置 > 隐私 > 权限管理器 > 文件和媒体 页面中,用户可以查看已授予权限READ_EXTERNAL_STORAGE应用,应用会列在允许存储所有文件下。...在Android 11 版本上,需要通过声明MANAGE_EXTERNAL_STORAGE权限来获取“Allowed for all files(允许存储所有文件)”权限,进行功能实现。...(2)应用在用户授予权限时可见,并且从那之后一直运行着前台服务,即使用户将应用切到后台,应用也会保留权限。 (3)应用短时间退至后台。...这些非 SDK 接口用于在 Android 平台上执行内部测试。应用可以继续使用灰名单中的测试 API,但任何新的测试 API 都会包含在黑名单中。

    13K42

    从零开始为你的手机安装Win11系统

    1.本教学使用一加6(8G+128G)手机在Hydrogen OS 10.0.10基础上进行操作,如系统版本低于安卓10请务必先跳至本文的第三部分的(3)4。...显示以下窗口即为完成 此时文件夹中将会出现所需要的.ISO镜像文件 ⑤将下述文件存入U盘中 上述过程①中的一加6触摸屏修复.reg,③中的Dism++文件夹和解包得到的output...,在联网状态下即可将手机升级到氢OS安卓9.0.8版本,然后在安卓9.0.8的版本中又可以升级到氢OS安卓10.0.10版本。...如果你的手机无法正常联网,或者嫌更新下载速度太慢,可以按照以下步骤操作: ①用数据线将手机与电脑连接,此时系统状态栏会出现一个USB选项,点击打开 切换到传输文件模式 此时电脑会自动弹出内部共享存储空间...,双击打开 将氢OS安卓9.0.8官方Rom包复制到内部共享存储空间的根目录 ②在手机中打开“设置-系统更新” 点击右上角的齿轮 点击本地升级 选中刚刚复制进手机的Rom包

    5.5K30

    Android8.0、9.0、10.0、11.0的新特性兼容适配代码修改

    《Android Studio开发实战 从零基础到App上线(第2版)》在书后面的附录中给出了Android8和Android9的主要特性说明,附录表格如下图所示: 不过附录表格只涵盖了常见的功能代码适配.../com/example/animation/ObjectGroupActivity.java 2、普通应用不允许修改系统设置 也就是Android8.0之后无法再调用系统设置的修改方法Settings.System.putInt...首先确保代码已经添加动态申请存储权限的逻辑,然后给AndroidManifest.xml中的application节点增加以下属性: android:requestLegacyExternalStorage...3、Android11默认WebView不能访问存储卡上的网页 build.gradle中采用Android11编译时(targetSdkVersion 30),WebView无法访问存储卡的网页文件...在Android10及以下版本,该值默认为true,但从Android11开始该值默认为false。 设置代码示例如下: // 设置是否允许访问文件,如WebView访问存储卡的文件。

    1.1K20

    如何在手机上 安装 Kali NetHunter 详解

    ) 支持的 Android 版本:CM 12.1或13.0 2.0 下载NetHunter 可以使用官方的镜像来直接刷机, 也可以在第三步自己制作镜像文件,请移到第三步 [3.0 建设NetHunter...复制文件到手机 官方 ROM: cm-13* 和 cm-14* 下载地址: 安卓系统 ROM 下载地址 kali 内核头文件下载地址 kali 内核头文件 百度云我的文件夹共享(全部使用到的文件) :...*,是安卓4.4 cm-12*,是安卓6.0 cm-13*,是安卓6.0 cm-14*,是安卓7.0 4.0在Android上安装NetHunter 1....cm-11*,是安卓4.4 cm-12*,是安卓6.0 cm-13*,是安卓6.0 cm-14*,是安卓7.01234 安装成功后是没有出现 SuperSU 的,Kali NetHunter 无法获取到...一起按住减音量“-” 和 电源键,三至五秒左右,选择语言 选择语言:中文 滑动按钮允许修改 选择:清除 滑动恢复出厂或者选择高级清除中选择 1235 项 返回之后选择安装 选择要安装的 cm-13*

    15.8K40

    Ui Automator 框架和Ui Automator Viewer你会用吗?附送「必备adb命令」拿走不谢 !

    需掌握 Linux 系统中的常用命令、文件夹的权限、路径表达、解压、基本的环境部署、tomcat、搭建数据库。 如果想在手机上找到一个手机路径,就必须知道它在内部的文件存放。...sdcard(存储空间)在 Linux 系统中就是一个文件夹来表达。 cd sdcard基本上你的用户数据都会存储在这个目录下。 adb pull 不能在 shell 命令下进行的。输入exit。...在通常情况下,写满时最旧的日志会被删除以给新输出的日志留内存空间。...sdk 的坑 我安装安卓 sdk,之前用镜像一直没问题,今天死活不行,应该是镜像不能用了。...安卓 sdk 包没下载全的情况下配置环境变量也没用的。所以不要以为自己的环境变量配错了,可能是包没下载全。 ----

    3.6K11

    使用termux将华为手机配置成linux服务器

    他的所有文件都在此目录下:/data/data/com.termux/files/usr #在Termux shell中存在"$PREFIX"环境变量指向这个目录一旦删除手机上的Termux软件,该目录下的一切也会被删除...但是通过Termux,我们仍然可以使用安卓手机进行一些通常认为是在linux主机上进行的工作:使用 Python 处理数据。在合适的开发环境中编程。用定时工具下载和管理文件和页面。...Termux安装系统要求:安卓版本 7.0 - 12.0 (经验证鸿蒙手机系统2.0也是可以的)CPU架构: AArch64, ARM, i686, x86_64最少200兆的存储空间。以下进入正题。...有切换或新建终端会话、呼出系统键盘等功能通知栏 在系统通知栏显示的termux通知项。有退出终端会话(所有终端会话!)、唤醒锁定(即使没有会话运行也会保持termux在后台运行)等功能。...termux也可以安装x11程序和vnc来开启图形界面,本文不详述。

    7.7K50

    Ui Automator 框架和Ui Automator Viewer你会用吗?附送「必备adb命令」拿走不谢 !

    需掌握 Linux 系统中的常用命令、文件夹的权限、路径表达、解压、基本的环境部署、tomcat、搭建数据库。 如果想在手机上找到一个手机路径,就必须知道它在内部的文件存放。...sdcard(存储空间)在 Linux 系统中就是一个文件夹来表达。 ? cd sdcard基本上你的用户数据都会存储在这个目录下。 adb pull 不能在 shell 命令下进行的。...在通常情况下,写满时最旧的日志会被删除以给新输出的日志留内存空间。...sdk 的坑 我安装安卓 sdk,之前用镜像一直没问题,今天死活不行,应该是镜像不能用了。...其实也可以直接下载,关键啊我没看懂报错(就是下载包那里一堆 x,然后还有英文报错 Google 啥的具体没看懂,图也忘了截图了,这个和镜像没关系,镜像的报错是在 log 里,这里不是,就是不能下载)。

    1.8K20

    IT业界 |关于IT业界的新闻,风向标

    ,也可以参考国外的IT文章将它翻译引入国内,同时学习最新的国外IT知识,使你在IT业界紧跟时代步伐。...在回答这个问题之前,我想大家都知道计算机的一个常识,计算机的运行是需要操作系统为基础的,操作系统为计算机提供了设备管理、存储管理等功能,可以说是一台电脑的灵 为什么安卓机没IPhone流畅?...腾讯科技: 相信很多网友都有类似疑问,感觉安卓手机在流畅度上不如iPhone手机。...先不说一些配置低的安卓机,即便是最新版安卓系统的旗舰手机,也会感觉达不到iPhone手机的那种流畅度,因此有人以此判断安卓手机不好。 其实,这都是二者系统机制不同导致的差异。...,这就意味着微信用户无法通过移动客户端把支付宝红包、虾米和网易云音乐上的音乐内容发布到微信朋友圈中。

    94940

    搭建自己的Anki同步服务器

    发现一个严重的问题,桌面端和安卓端会冲突。 桌面端和服务器同步之后,安卓端要重新下载整个库;安卓端和服务器同步后,桌面端要重新下载。尚未发现解决办法。...# mkdir Anki 找到AnkiServer中示例配置的目录,我的在/usr/lib/python2.7/site-packages/AnkiServer-2.0.6-py2.7.egg/examples...[production.ini配置文件] 我用红色涂抹的是主机地址,填你的服务器的内网地址,下面的允许来访问你的服务器的机器的ip,可以枚举每个你允许的ip,也可以设置0.0.0.0 允许任何ip地址连接...客户端 点击同步按钮,输入自己在服务器里设置的用户名和密码,然后就像用AnkiWeb服务一样了,不过体验如丝般顺滑,而且可以同步很大的库文件 AnkiDroid安卓端设置 一定要注意URL协议是http...,用HTTPS会提示网络错误,无法登录 [安卓端截图1] [安卓端截图2] [安卓端截图3] 得益于大家的力量,我完成了自己的Anki服务器搭建,但愿我的文章也能给你提供帮助。

    7.8K00

    【沙龙干货分享】你要知道的N个Android适配问题

    本期,我们分享的主题是安卓应用机型适配之痛。适配性问题作为安卓开发者中的老大难问题,几乎困扰过每一个安卓开发者。如何在保证快速的研发中,又能做好服务的质量保证呢?来听听我们的嘉宾带来的精彩分享。...2.1 重复创建快捷方式的解决方案 V1.X 我们最早使用的解决快捷方式重复创建的方法是:在创建快捷方式前先执行删除操作,这种方式其实很聪明,因为即使是在快捷方式不存在的情况下执行删除操作也不会有任何异常...,这样看来问题解决地太轻松了,但是遗憾的是删除快捷方式同样存在适配问题,我们掌握的数据显示大约 21%的手机无法正常删除快捷方式。...,就不要使用data 来获取照片,起码在使用前要做空判断) 问题二:照片无法存储 如果自定义存储路径是/mnt/sdcard/lowry/,而手机SD 卡下在拍照前没有名为lowry 的文件夹,那么部分手机拍照后图片不会保存...解决的方法就是在指定存储路径前先判断路径中的文件夹是否都存在,不存在先创建再调用相机。

    1K60

    微信视频号里的视频怎么下载到本地,两种方法可以帮你实现

    不知道大家有没有看过微信的视频号,因为要做一个小视频,需要剪切多个视频合集,对方给我发来的部分视频源自微信视频号,结果我发现我下载不了,嗯嗯,因为在手机端没有下载也看不见网址,在PC端呢,无法右键也无法...移动端(安卓8.0机型) 我们先看一下要下载的视频,全部看完之后我们返回桌面,点开文件管理器,找到全部文件(根目录)/Android/data/com.tencent.mm/cacha/,截止目前路径是一致的...image.png 进入路径之后找到如图的“finder”文件夹,点击进入: image.png 进去之后我们找到“video”文件夹,点开之后如图所示,这里的文件都是我们看过的视频缓存,如图: 如果习惯性浏览微信视频号...,那么这里的文件会有很多,所以防止混乱建议在进入目录之前先删除下垃圾文件,一般安卓手机都自带管家,然后直接优化就行,因为是缓存文件夹,会连同文件夹一同删除,优化之后我们先看视频,看完之后我们再来文件夹查看视频文件...,那时可能只有一个刚刚看过的,最后一步将文件重命名“.MP4”视频文件格式,然后就可以了,此教程仅限安卓机,我的系统是8.0的安卓,其他版本未经测试,但是貌似9.0以后的安卓缓存路径貌似变了,等我有测试机的时候在测试吧

    48.9K20

    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!

    嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法在移动设备日益普及的今天,我们常常希望能够更便捷地控制和管理自己的安卓设备。...如果你的手机提示进行调试授权,点击允许。之后,将你的安卓手机通过USB线连接到电脑上。这时,Escrcpy中的设备列表应该能够检测到你的手机,然后点击“开始镜像”,就可以愉快地使用了。...(四)偏好设置常规设置在偏好设置中的常规选项里,可以对主题、语言、文件存储路径、Adb路径、Scrcpy路径、Gnirehtet路径、Scrcpy参数等进行设置。...如果你的电脑没有音频输出设备或者安卓设备版本较低(Android 11+)导致音频捕获异常,可以通过禁用音频转发功能来解决镜像失败的问题。...然后滚动页面,找到“排除项”,点击“添加或删除排除项”,将下载软件包的文件夹路径添加为排除项。

    17910

    更好的开卡,来聊聊非功能性需求

    几年前,可以发现很多此类漏洞,甚至在我学生时期用某电信运营商的权限漏洞得手了不少付费游戏。如果系统设计了权限管理模块,在开启新功能时也应该和 BA 确认是否纳入权限管理。...如果用户体完成了整个操作,图片会和文章关联,但是假如用户放弃了操作,图片就会变成游离状态无法继续管理,造成大量垃圾数据占用系统资源。 删除操作,没有删除一些关联数据。...各种浏览器内核具体的型号,而不是讨论搜狗、360 这类壳浏览器。如果是 APP 内部的webview,这就需要收集相关安卓或 IOS 的版本号。 是否允许一定程度上的降级策略?...比如在老式的安卓手机中大量的 CSS3 特性不支持,可能会造成动画失效,是否我们可以不在老式的手机中要求过渡动画等。 升级策略 前端有兼容性问题,那么服务器端就没有了么?...在服务器端开发的时候保持一定兼容性的同时,更重要的是需要和 BA 一起设计出合理的升级方案。我的经验是设计API 时,需要在URI路径中预留版本号,例如 V1/your-api/{id}。

    1K10

    EasyRecovery14数据恢复软件安装包下载使用教程

    直观的DIY软件以向导驱动的界面为特色,即使是最初级的用户也可以轻松地恢复数据。使用该软件,您可以从连接到系统的硬盘驱动器或外部存储介质中恢复已删除或丢失的数据。...该软件强大的扫描引擎可以对所选存储设备进行彻底扫描,显示扫描过程中找到的文件的预览,最后将它们保存到指定的目标位置,还可以使用单独的选项从存储介质中恢复文档,文件夹,邮件或多媒体文件。...可以在驱动器严重损坏以及意外格式化和删除导致的其他数据丢失事件后,有效地恢复丢失或删除的文件、文件夹、文档、照片、视频和其他重要数据。...4、移动硬盘数据恢复大数据的携带,移动硬盘的应用举足轻重,在移动硬盘的使用中无法避免数据丢失,支持:移动硬盘删除恢复、误删除恢复、格式化恢复,操作与硬盘数据恢复一样简单。...6、手机数据恢复支持恢复安卓手机内存上的所有数据,根据手机的品牌及型号不同,可恢复手机内存卡甚至是手机机身内存。包括手机照片恢复,文档、音频及视频等手机数据恢复。

    1.3K30

    2018年的安卓开发环境搭建

    安装Android Studio 安卓官网在国内无法访问,不过谷歌为了中国开发者,专门弄了一个中国开发者网站,国内可以轻松打开,页面也和国际官网一模一样。...我出现的错误是找不到下载目录,仔细检查后发现,AS会尝试下载到以前的用户临时文件夹中,但是我用户名改过了,所以就出错了。我的解决办法是把原来的SDK全删了重新下载一次。...很遗憾我用的AMD锐龙处理器,所以无法运行x86安卓模拟器,准确的说是无法在关闭HyperV的情况下运行,因为我同时还要运行其他虚拟机软件。所以只能使用另一种办法,那就是直接在手机上运行。...所以最好只在自己电脑上开启USB调试,在公共场合不要开启。 手机准备就绪之后点击Run -> Run app,就会打开设备列表对话框,同时在手机上提示是否允许USB连接。...由于我手机小米8的安卓P稳定版尚未推送,所以还正好无法运行安卓P的应用,我还特地在gradle配置文件中将minSdkVersion修改为27,才能正好运行。

    1.7K20
    领券