Android11有了哪些改動
Android11主要是進(jìn)一步收縮了應(yīng)用權(quán)限袄友,在權(quán)限管理方面比以前更加嚴(yán)格
最主要,影響最大的磷瘤,就是存儲卡訪問權(quán)限的調(diào)整
從Android11開始春缕,應(yīng)用將只能訪問自己的私有目錄
其它目錄朱盐,只能判斷文件是否存在购桑,但是既不能讀取畅铭,也不能寫入
這直接影響到文件選取、拍照錄像錄音勃蜘、文件分享、文件下載等功能
對開發(fā)者影響非常大假残,特別是嚴(yán)重依賴于外部存儲的項目
應(yīng)對方案
首先擺正心態(tài)缭贡,積極適配,不要抗拒變化辉懒,逃避問題阳惹,影響比較多,我們逐個擊破
Android11獲取應(yīng)用安裝列表
Android11獲取應(yīng)用列表眶俩,需要登記額外權(quán)限
<!-- 獲取應(yīng)用列表 -->
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
Android11使用外部存儲
Android11并沒有完全禁用外部存儲
但是只能通過用戶手動授予權(quán)限的方式來實(shí)現(xiàn)莹汤,不能通過代碼去申請
登記外部存儲訪問權(quán)限
<!-- 存儲 -->
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 申請外部存儲訪問權(quán)限 -->
<application
android:preserveLegacyExternalStorage="true"
android:requestLegacyExternalStorage="true">
</application>
判斷有沒有完全的外部存儲訪問權(quán)限
Environment.isExternalStorageManager();
打開完全外部存儲訪問權(quán)限申請頁面
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 10001);
Android11使用公共媒體目錄
可通過以下API獲取公共媒體目錄
String documentDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).toString();
String downloadDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString();
Android11使用私有目錄
這是Android官方推薦的做法,每個應(yīng)用只訪問自己私有目錄的數(shù)據(jù)
這個目錄在存儲卡中是不可見的颠印,只有應(yīng)用自己可以通過代碼訪問
String privateRoot = Environment.getExternalStorageDirectory() + "/Android/data/" + CommonApplication.ctx.getPackageName() + "/";
微信分享
Android11中的分享失敗纲岭,是由文件訪問權(quán)限間接引起的
解決以上問題后抹竹,分享的問題也就迎刃而解了
定義一個自己的FileProvider,通過FileProvider.getUriForFile來獲取Uri止潮,然后通過Uri分享不會的搜索一下FileProvider和微信分享相關(guān)的博客就行了
————————————————
版權(quán)聲明:本文為CSDN博主「命運(yùn)之手」的原創(chuàng)文章窃判,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明喇闸。
原文鏈接:https://blog.csdn.net/u013718730/article/details/118185047