最近Android10的手机不断上市,在对其就进行适配过程中发现对文件操作发生错误,问题如下:

java.lang.SecurityException: getSubscriberId: The user 10163 does not meet the requirements to access device identifiers.

查询官方文档后发现,android10对文件操作进行了更加严格的规定:

1、app私有目录,不需要权限就可以访问。

2、媒体目录(相册、视频、音频...),需求申请READ_EATERNAL_STORAGE权限,访问方式使用MediaStore。

3、下载目录,不要权限,使用Storage Access Framework进行访问。

另外,其他目录只能访问文件列表,不能再读写文件,需要将文件放到自己的私有目录再读写。

85cdc6551093

image.png

解决方案有3个:

1、整体修改项目中的文件读写方式,

2、修改targetSDK为28及以下。

3、在AndroidManifest的application中设置android:requestLegacyExternalStorage="true"。

由于最近项目进度紧张,临时采用方案3进行修改,后续再排期进行适配。

本文作者:余海(sky)

本文为原创作品,未经允许不得转载。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐