最近由于應(yīng)用市場(chǎng)審核比較嚴(yán)格,需要targetsdkversion升級(jí)到30以上和需要app備案,app備案相關(guān)的只能找相應(yīng)的網(wǎng)絡(luò)供應(yīng)商接口來進(jìn)行,或者通過華為云,阿里云等來進(jìn)行備案,本人也將公司的app按要求進(jìn)行升級(jí),升級(jí)到android 11 后,需要進(jìn)行一些適配
1、分區(qū)存儲(chǔ)
android 11開啟了分區(qū)存儲(chǔ),即將公共區(qū)域劃分成了不同的集合,并且在媒體文件和其他文檔之間建立了清楚的分割。經(jīng)過劃分之后應(yīng)用不可以隨意訪問外部存儲(chǔ)區(qū)中的文件,而只能訪問媒體文件。如果想訪問包含更多細(xì)節(jié)數(shù)據(jù)的其他文檔,應(yīng)用專門向用戶申請(qǐng)有關(guān)文檔的訪問權(quán)限。
在android 10的時(shí)候 就已經(jīng)推行了分區(qū)存儲(chǔ),簡(jiǎn)單的說,就是應(yīng)用對(duì)于文件的讀寫只能在沙盒環(huán)境,也就是屬于自己應(yīng)用的目錄里面讀寫。其他媒體文件可以通過MediaStore進(jìn)行訪問。
但是在android10的時(shí)候,Google還是為開發(fā)者考慮,留了一手。在targetSdkVersion = 29應(yīng)用中,設(shè)置android:requestLegacyExternalStorage=“true”,就可以不啟動(dòng)分區(qū)存儲(chǔ),讓以前的文件讀取正常使用。但是targetSdkVersion = 30中不行了,強(qiáng)制開啟分區(qū)存儲(chǔ),設(shè)置android:requestLegacyExternalStorage="true"已經(jīng)無效了。
那該怎么辦哪,我們可以通過 申請(qǐng)獲取所有文件的管理權(quán)限,需要在清單文件添加


獲取之后就可以使用了
2.應(yīng)用可見
由于使用了極光分享和微信開放平臺(tái)打開微信客服,所以需要在清單文件配置一些應(yīng)用的包名,用于打開一些三方的應(yīng)用

3.獲取應(yīng)用安裝列表
如果你的app 在使用PackageManger的方法來獲取安裝的應(yīng)用列表,或者檢查應(yīng)用的設(shè)備,那么在Android11上,就需要做一點(diǎn)改變了。

這個(gè)代碼在android 11以下沒有任何問題,在android 11 需要另外加一個(gè)權(quán)限,才可以使用
