Android Q之提前適配攻略(四)(後臺Activity啓動限制)
數據隱私保護:沙盒機制
對於 Android 用戶來說,這是一項非常優秀的改進。自從 Android M 以來,我已經遇到許多不給讀寫外存權限就無法使用的 App 了。結果是打開文件管理就能看到一堆亂七八糟的文件和文件夾,這對習慣自己整理存儲空間的人來說太痛苦了。
但讀寫外存的權限並非必要的。通過Context.getExternalFilesDir
可以獲取到屬於 App 自身的文件路徑,通常是~/Android/data/<package-name>/**/
。在該目錄中讀寫文件均不需要申請權限,當 App 被卸載時,該文件夾及內容也會全部刪除。
Android Q 中刪除了READ_EXTERNAL_STORAGE
和WRITE_EXTERNAL_STORAGE
兩項危險權限,限制 App 只能使用自己的應用空間存放文件。
當 App 需要保存一些不能隨卸載刪除的文件時,需要根據存放位置動態申請新增的權限:READ_MEDIA_IMAGES
,READ_MEDIA_VIDEO
或 READ_MEDIA_AUDIO
(分別對應系統的媒體文件夾)。 比較特殊的是 Downloads 文件夾:寫入和讀取自身寫入的數據不需要申請權限,但想獲取其他 App 存進去的文件時,必須使用系統的文件選擇器,由用戶選擇。
以上幾個路徑之外的所有位置均不可訪問,是不是很讓人安心呢?
[模擬器測試結果]
測試安裝了一個 targetSdkVersion=26 的 demo 項目,除了動態申請存儲權限時的文案之外一切都沒改變,應該是兼容了 targetSdkVersion 小於 Q 的 App。考慮到應用市場對 targetSdkVersion 要求(今年只要求到28),最晚要在明年 Android R 面世之前完成適配。
其他適配相關內容簡報
其他的更新內容估計要等 I/O 之後上真機調試了,就簡要描述一下吧
- App 在後臺使用定位需要動態申請
ACCESS_BACKGROUND_LOCATION
- 注意:不可單獨申請,原來的定位權限依然需要
- 提供 摺疊屏/多屏顯示 適配方案(生命週期調整)
- share intent UI 預加載
- 設置面板:可以在 App 內喚起簡易設置頁面(網絡/音量/NFC)
- Wifi 模式選擇(high performance / low latency)