最近Android10的手機不斷上市搓谆,在對其就進行適配過程中發(fā)現(xiàn)對文件操作發(fā)生錯誤拆内,問題如下:
java.lang.SecurityException: getSubscriberId: The user 10163 does not meet the requirements to access device identifiers.
查詢官方文檔后發(fā)現(xiàn)栏尚,android10對文件操作進行了更加嚴(yán)格的規(guī)定:
1渤刃、app私有目錄拥峦,不需要權(quán)限就可以訪問。
2卖子、媒體目錄(相冊略号、視頻、音頻...)洋闽,需求申請READ_EATERNAL_STORAGE權(quán)限玄柠,訪問方式使用MediaStore。
3诫舅、下載目錄羽利,不要權(quán)限,使用Storage Access Framework進行訪問刊懈。
另外这弧,其他目錄只能訪問文件列表娃闲,不能再讀寫文件,需要將文件放到自己的私有目錄再讀寫匾浪。
image.png
解決方案有3個:
1皇帮、整體修改項目中的文件讀寫方式,
2蛋辈、修改targetSDK為28及以下属拾。
3、在AndroidManifest的application中設(shè)置android:requestLegacyExternalStorage="true"冷溶。
由于最近項目進度緊張渐白,臨時采用方案3進行修改,后續(xù)再排期進行適配逞频。
參考:
https://developer.android.google.cn/training/data-storage/files/external-scoped#java
本文作者:余海(sky)
本文為原創(chuàng)作品纯衍,未經(jīng)允許不得轉(zhuǎn)載。