
Android11适配
快马夜小刀
这个作者很懒,什么都没留下…
展开
-
使用MediaScannerConnection主动更新MediaStore
现象:在适配Android11迁移文件夹时,遇到一个问题。在Android11以下版本迁移多媒体文件成功后,我们使用SAF选择文件时,还是可以看到多媒体文件。但是多媒体文件已经不存在了。原因:虽然我们的多媒体文件已经不存在了,但是MediaStore中的数据库还存在原来多媒体文件的数据。解决方案:那我们刷新一下MediaStore中的数据库就可以了。可以通过MediaScannerConnection.scanFile静态方法来刷新。我这里封装了一下,传入目录或者文件都可行。我这里没有传如mimeTyp原创 2020-11-05 18:42:27 · 2679 阅读 · 0 评论 -
Android11适配-包可见性
Android11的包可见性我们的应用常常会碰到与其他应用交互,比如登录功能,我们可能希望使用微信登录或者QQ登录,再比如分享,我们先判断是否安装了微信,然后决定是否展示微信的分享图标等等。这里我们有一个需求就是获取相关的软件包是否已经安装。但是在Android11中,除了默认的一些应用外,我们不能直接获取到软件包是否已经安装了,换句话说我们安装了一个应用,但是我们调用 getInstalledApplications() 或 getInstalledPackages()的可能没有返回此包名。这就是An原创 2020-10-19 20:19:05 · 4033 阅读 · 0 评论 -
Android11(30)/Android10(29)分区存储-存储访问框架(SAF)
概述存储访问框架(SAF)是在Android 4.4(API 级别 19)引入的。借助 SAF,用户可轻松打开文档、图像及其他文件。存储访问框架包含三部分:文档提供程序 — 文档提供程序以 DocumentsProvider 类的子类形式实现。Android 平台包含有内置文档提供程序,如 Downloads、Images 和 Videos。客户端应用 — 应用可以通过发送 ACTION_OPEN_DOCUMENT 或 ACTION_CREATE_DOCUMENT 的Intent来启动选择器,并.原创 2020-09-20 21:17:42 · 4624 阅读 · 0 评论 -
Android11(30)/Android10(29)分区存储-适配方案
适配Android10分区存储Android10是分区存储的过度版本,不建议开启分区存储。我们可以android:requestLegacyExternalStorage="true"来关闭Andorid10的分区存储。<application android:requestLegacyExternalStorage="true"></application>Android11适配Android11分区存储强制开启,分区存储开启后,存在两个问题 一个是比如文件管.原创 2020-09-20 21:13:53 · 5896 阅读 · 0 评论 -
Andorid11(30)/Android10(29)分区存储-应用间共享文件
在Android11/Andorid10分区存储中,两个应用之间如何共享文件呢?比如说我的应用生成了一个jpeg图片,想分享到微信,该怎么搞?有三种方案:生成到公共目录下,通过File接口分享(微信支持)生成到公共目录下,通过MediaStore接口进行分享(微信不支持)生成到私有目录下,通过FileProvider进行分享(微信支持)本篇代码比较多,比起废话,Show code更靠谱。生成到公共目录下,File接口分享对于Android10的分区存储不支持此方案,而Android11的.原创 2020-09-20 21:01:13 · 3833 阅读 · 1 评论 -
Android11(30)/Android10(29)分区存储-相关接口
本文仅仅是接口说明,对于具体的使用方式,后续会说明。为了让用户更好地管理文件并减少混乱,Android 10(API 级别 29)引入了分区存储。分区存储是应用只能看到本应用特定的目录下的文件(通过 Context.getExternalFilesDir() 访问),公共目录下的媒体文件(通过MediaStore访问),以及存储访问框架返回的文件,不能像以前为所欲为了。Android10(API级别29)没有强制要求使用分区存储,但是在Android11(API级别30)强制使用分区存储。下表是分区.原创 2020-09-20 20:53:26 · 2711 阅读 · 1 评论