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

Android 10适配要点,作用域存储

距离Android 10系统正式发布已经过去大半年左右时间了,你应用程序已经对进行适配了吗? 在Android 10众多行为变更当中,有一点是非常值得引起我们重视,那就是作用域存储。...从Android 10开始,每个应用程序只能有权在自己外置存储空间关联目录下读取和创建文件,获取该关联目录代码是:context.getExternalFilesDir()。...但同时,刚才提到那两个“好处”也就不存在了。这个目录中文件会被计入到应用程序占用空间当中,同时也会随着应用程序卸载而被删除。 那么有些朋友可能会问了,就是需要访问其他目录该怎么办呢?...但使用这种方式,你需要知道,下载文件会被计入到应用程序占用空间当中,同时如果应用程序被卸载了,该文件也会一同被删除。...使用文件选择器 如果我们要读取SD卡上非图片、音频、视频类文件,比如说打开一个PDF文件,这个时候就不能再使用MediaStore API了,而是要使用文件选择器。

2.1K10

详解Android10分区存储机制(Scoped Storage)适配教程

简介 大家应该都有过这样体会,手机用着用着里面就充斥着各种不懂文件夹和文件。甚至是连已经删除软件文件夹还存在。 为什么会发生这样问题呢?...沙盒机制是一种安全机制,用于防止应用读取其他应用数据。 每个应用程序都有自己存储空间。 应用程序不能翻过自己目录,去访问公共目录。 应用程序请求数据都要通过权限检测,不符合要求不会被放行。...除非您应用需要访问存放在应用专有目录以及 MediaStore 之外文件,否则最好使用分区存储。...应用自己创建照片、视频和音频(通过MediaStore访问)。 分区存储将影响在Android10系统首次安装启动、且targetSdkVersion =29应用。...类型 位置 访问应用自己生成文件 访问其他应用生成文件 访问方法 卸载应用是否删除文件 外部存储 Photo/ Video/ Audio/ 无需权限 需要权限READ_EXTERNAL_STORAGE

3.1K32
您找到你想要的搜索结果了吗?
是的
没有找到

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

其中,对共享目录权限进行了细分: 无需申请权限操作:通过 MediaStore API对媒体集、文件集进行媒体/文件添加、对自身APP创建 媒体/文件 进行查询、修改、删除操作。...需要申请READ_EXTERNAL_STORAGE 权限:通过 MediaStore API对所有的媒体集进行查询、修改、删除操作。...系统在调用以上任何一个方法,会构建一个 PendingIntent 对象。应用调用此 intent ,用户会看到一个对话框,请求用户同意应用更新删除指定媒体文件。 2...., 0) resolver.update(songContentUri, songDetails, null, null) 3)更新自己创建媒体集(无需权限) 删除类似。...Q:可以在媒体集文件夹下创建文档,就可以避开权限问题了? A:官方文档上写了只能创建相应类型媒体/文件,具体如何限制,没有说明。

2.2K30

【Android 文件管理】分区存储 ( 修改与删除图片文件 )

MediaStore 文件操作 ) 【Android 文件管理】分区存储 ( 创建与查询图片文件 ) 【Android 文件管理】分区存储 ( 修改与删除图片文件 ) 在上一篇博客 【Android 文件管理...】分区存储 ( 创建与查询图片文件 ) 中 , 使用 MediaStore 在外置存储 SD 卡中 Pictures 目录中 , 创建 了 image.jpg 图片文件 , 并进行了 查询 ; 本篇博客讲解使用...修改为 image_update.jpg ; 分区存储机制中 , 删除图片文件 , 不能通过获取其绝对路径进行删除 , 必须先使用 MediaStore 查询到图片文件 Uri , 然后通过 Uri...---- 将 /sdcard/Pictures/image/ 目录下 image_update.jpg 文件删除 ; 分区存储机制中 , 删除图片文件 , 不能通过获取其绝对路径进行删除 , 必须先使用...MediaStore 查询到图片文件 Uri , 然后通过 Uri 执行 删除 / 修改 图片文件操作 ; 查询图片 : 查询图片文件具体原理参考 【Android 文件管理】分区存储 ( 创建与查询图片文件

2.4K20

AndroidQ兼容性适配指南

APP卸载,不会删除。...,未申请存储权限,通过 ContentResolver 查询不到文件 Uri,即使通过其他方式获取到文件 Uri,读取或创建文件会抛出异常; MediaStore API 不能够访问其他应用创建非媒体文件...删除文件 删除自己创建多媒体文件不需要权限,其他APP创建,与修改类型,需要用户授权。...针对只有应用自己访问并且应用卸载允许删除文件,需要迁移文件到应用私有目录文件,可以通过 File path 方式访问文件资源,降低适配成本。...允许其他应用访问,并且应用卸载不允许删除文件文件需要存储在共享目录,应用可以选择是否进行目录整改,将文件迁移到 Androidq 要求 media 集合目录。

6.9K30

干货 | 携程Android 10适配踩坑指南

MediaStore API在共享目录指定目录下创建文件或者访问应用自己创建文件,不需要申请存储权限 MediaStore API访问其他应用在共享目录创建媒体文件(图片、音频、视频), 需要申请存储权限...,未申请存储权限,通过ContentResolver查询不到文件Uri,即使通过其他方式获取到文件Uri,读取或创建文件会抛出异常; MediaStore API不能够访问其他应用创建非媒体文件(pdf...-->MediaStore API访问其他应用创建非media文件 --> SAF否访问自己应用创建文件 -->MediaStore APISAF 2.4 兼容模式 应用未完成外部存储适配工作...针对只有应用自己访问并且应用卸载允许删除文件,需要迁移文件到应用私有目录文件,可以通过File path方式访问文件资源,降低适配成本。...允许其他应用访问,并且应用卸载不允许删除文件文件需要存储在共享目录,应用可以选择是否进行目录整改,将文件迁移到Android10要求media集合目录。

3.2K77

想监控微信一个文件夹,能不能自动每天把一些重复文件删除掉,留几个最新就可以?

大家好,是Python进阶者。...这些不能算是冗余。因为本质上,他们不是同一个文件多个重复备份。 针对这样现实需求,这就需要我们不定期地去删除下重复文件了,基于此需求,本文基于Python编程,给出了相应解决办法。...:{total_file}') print(f'删除个数:{total_delete}') if __name__ == '__main__': main() 这里自己拿一个文件夹做了一个尝试...上述代码使用了pathlib和hashlib库分别进行了文件路径和文件大小进行了相应判断,针对重复文件进行了删除处理。...如果在运行过程中,有遇到问题的话,请随时联系进行反馈,让编程更好地助力我们工作和生活! 三、总结 大家好,是Python进阶者。这篇文章主要给大家分享了一个自动删除文件小工具。

65820

Android11 (API30)适配

如果您需要对已安装应用进行适配分区存储数据迁移,则可以在应用更新到目标平台为Android 11版本仍暂时保留原有的存储模式。...●  迁移数据共享访问     ■  对于存放到公共目录文件,其他App可以通过MediaStore访问。    ...2.1.2应用缓存 1 背景 在Android 11上,应用默认不能删除其他应用缓存文件,即使申请了MANAGE_EXTERNAL_STORAGE权限。...MediaStore.Files表内容 注意:即便授予了所有文件访问权限,应用也不能获取其他app应用专属文件。...3.11 限制非SDK接口 1 背景 Android 11 包含更新受限制非 SDK 接口列表,在限制使用非 SDK 接口之前,Google尽可能确保提供公开替代方案。

7.4K11

Android 10 适配攻略小结

但是这些权限完全被滥用,造成问题就是手机存储空间中充斥着大量不明作用文件,并且应用卸载它也没有删除掉。...无需权限,且卸载应用时会自动删除。 照片、视频、音频这类媒体文件。使用 MediaStore 访问,访问其他应用媒体文件时需要 READ_EXTERNAL_STORAGE 权限。...或者使用 MediaStore ,将文件存至对应媒体类型中(图片: MediaStore.Images ,视频: MediaStore.Video ,音频: MediaStore.Audio ),不过仅限于多媒体文件...应用收到应该在其中启动界面的系统广播。示例包括 ACTION_NEW_OUTGOING_CALL 和 SECRET_CODE_ACTION 。应用可在广播发送几秒钟启动 Activity。...比如你要修改颜色,就在 res 下新建 values-night 目录,创建对应 colors.xml 文件。将具体要修改色值定义在里面。

1.8K32

【Android 文件管理】分区存储 ( 创建与查询图片文件 )

创建了一个文本文件 , 并向其写出一个字符串 ; 创建文件时注意 , 使用 MediaStore 向 " external.db " 数据库 中插入了文件数据 , 只是生成了文件索引 , 如果不向文件中写出数据..., 并不会真正创建文件 ; 插入数据 , 依据返回 android.net.Uri 类型打开输出流 , 然后通过该输出流写出数据 , 文件创建完成 ; 图片创建流程 : 首先 , 获取 操作数据库...; 创建完成 , 可以在 " Device Explorer " 面板中显示新创建图片 ; 关于 图片 MIME_TYPE : 图片文件创建 与 文本文件创建 唯一区别就是需要设置 MIME_TYPE...42 数字 , 就是在 " external.db " 数据库中 files 数据表中该 image.jpg 文件对应 _id 字段数据 ; 绝对路径 在 Android 11 分区存储机制 中不能用来做任何操作..., 否则会产生崩溃 ; 对文件操作 , 如 : 访问图片 , 删除图片 等操作 , 必须使用 Uri 进行操作 ; 三、相关文档资料 ---- Android 文件处理参考文档 : 数据和文件存储概览

92720

Android 11新特性,Scoped Storage又有了新花样

对于绝大部分应用程序来说,使用MediaStore提供API就已经可以满足大家开发需求了。如果你没有类似于开发文件浏览器这种需求,请尽可能不要使用接下来即将介绍技术。...Scoped Storage规定,每个应用程序都有权限向MediaStore贡献数据,比如说插入一张图片到手机相册当中。也有权限读取其他应用程序所贡献数据,比如说获取手机相册中所有图片。...但是如果这张图片是其他应用程序插入到手机相册,你还能对进行任意修改,这在Google看来就又是一个安全隐患,所以Scoped Storage限制了这个功能。...createDeleteRequest() 用于请求将多个文件删除权限。...这确实是个头疼问题,而且觉得主要是由于Google一开始在Android 10中API设计不合理所导致。依赖于异常捕获机制方案,无论如何都不能说是一种出色API设计。

1.3K20

AndroidR兼容性适配指南

垃圾箱中内容会在系统定义时间段被永久删除。...系统在调用以上任何一个方法,会构建一个 PendingIntent 对象。应用调用此 intent ,用户会看到一个对话框,请求用户同意应用更新删除指定媒体文件。...//PS:如果这个文件是自己应用程序创建,是可以通过FileAPI进行访问,但卸载重装会丢失访问权限;如果没有访问权限会发生异常; val file = File(str) if (...分区存储中应用程序是否仅限于将文件写入其特定于应用程序数据目录? 在分区存储中,应用程序可以将媒体文件贡献给媒体商店收藏。...对于媒体商店插入和更新,Scoped Storage 中应用程序应使用 DISPLAY_NAME 和 RELATIVE_PATH 列。他们不能再为此使用 DATA 列。

1.9K20

【Android 文件管理】分区存储 ( MediaStore 文件操作 )

操作文件 ---- 在 Android 11 之后 , 不能使用 File 进行文件操作 , 需要使用 MediaStore 进行文件操作 , MediaStore 的如下内部类 Files ,..., "hello.txt") // 设置文件标题, 一般是删除后缀, 可以不设置 contentValues.put(MediaStore.Downloads.TITLE..., "hello") ContentValues 构造成功 , 使用 ContentResolver 将数据插入数据库中 ; 系统会自动创建对应文件 ; 向数据库中插入数据 : //...系统自动创建文件是一个目录文件 , 向其中写出 “Hello World” 文本数据 , 即可完成相关文件创建 ; 通过返回 Uri 打开输出流 , 向文件中写出数据 : // 向...contentValues.put(MediaStore.Downloads.DISPLAY_NAME, "hello.txt") // 设置文件标题, 一般是删除后缀, 可以不设置

2.3K20

Android 11 中存储机制更新

在 Android 10 中,我们调整了存储权限工作方式,仅为应用提供其所需访问权限。这也是在鼓励应用在指定目录下进行文件存储以限制文件混乱。当应用被卸载,这些相关目录也会被删除。...当应用被卸载,除非用户需要,否则应用之前所创建文件也不应该保留在设备上; 保护应用数据: 当一个应用将它所属文件写入外部存储时,这些文件是不应该被其他应用所访问; 保护用户数据: 当用户下载了一些文件...在 Android 10 里唯一一种访问其他应用创建非媒体文件途径是使用存储访问框架 (Storage Access Framework) 提供文档选择器。...在 Android 10 中,应用在对每一个文件请求编辑或删除时都必须得到用户的确认。而在 Android 11 中,应用可以一次请求修改或者删除多个媒体文件。...对 Storage Access Framework 更新 当我们对广泛存储访问进行限制,一些开发者试图使用 Storage Access Framework (SAF) 遍历整个文件系统。

2.9K11

Android7.0适配心得

应对策略:这项权限变更将意味着你无法通过File API访问手机存储上数据了,基于File API一些文件浏览器等也将受到很大影响,看到这大家是不是惊呆了呢,不过迄今为止,这种限制尚不能完全执行...第二步:指定共享目录 为了指定共享目录我们需要在资源(res)目录下创建一个xml目录,然后创建一个名为“file_paths”(名字可以随便起,只要和在manifest注册provider所引用...() 心得:上述代码中path="",是有特殊意义代码根目录,也就是说你可以向其它应用共享根目录及其子目录下任何一个文件了,如果你将path设为path="pictures", 那么代表着根目录下...无论是应用部分还是全部低电耗模式限制,系统都会唤醒设备以提供简短维护时间窗口,在此窗口期间,应用程序可以访问网络并执行任何被推迟作业/同步。...后台优化 小伙伴们都知道在Android中有一些隐式广播,使用这些隐式广播可以做一些特定功能,如,当手机网络变成WiFi时自动下载更新包等。

1.3K50

AndroidQ分区存储权限变更及适配实现

比如要获得一张图片 Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES) 访问其他应用创建文件 只有在满足以下两个条件时,您应用才能访问其他应用创建文件...卸载保留应用文件 文件存储在应用私有目录下,在卸载该应用后,系统会清除该应用目录中所有文件(有点类似Android/data/xxx目录)。...有时我们要在卸载保留这些文件,请将其保存到 MediaStore某个目录下。...文件访问权限摘要 文件位置 所需权限 访问方法 卸载时是否删除文件 应用私有目录 无 getExternalFilesDir() 是 媒体集合(照片、视频、音频) READ_EXTERNAL_STORAGE...访问和修改媒体内容 上面已经介绍过了不再重复,需要使用MediaStore 更新其他应用媒体文件 Android Q以前应用都不太关注其它用户组访问应用目录权限,适配Android Q你会接到厂商要求你限定用户组访问存储目录权限问题单

1.5K31
领券