Android 11 新特性(含Android Studio 4.0 新特性)

隱私權(quán)限更新

下表匯總了 Android 11 中與隱私權(quán)相關(guān)的主要變更。

隱私權(quán)變更 受影響的應(yīng)用 緩解策略
強(qiáng)制執(zhí)行分區(qū)存儲(chǔ)機(jī)制
以 Android 11 為目標(biāo)平臺(tái)的應(yīng)用始終會(huì)受分區(qū)存儲(chǔ)行為的影響
以 Android 11 為目標(biāo)平臺(tái)的應(yīng)用夕玩,以及以 Android 10 為目標(biāo)平臺(tái)且未將 requestLegacyExternalStorage 設(shè)為 true 以停用分區(qū)存儲(chǔ)的應(yīng)用 更新您的應(yīng)用以使用分區(qū)存儲(chǔ)
詳細(xì)了解分區(qū)存儲(chǔ)變更
一次性權(quán)限
通過一次性權(quán)限命辖,用戶可以授予對(duì)位置信息粪躬、麥克風(fēng)和攝像頭的臨時(shí)訪問權(quán)限
以任何版本為目標(biāo)平臺(tái)且請(qǐng)求位置信息斑粱、麥克風(fēng)或攝像頭權(quán)限的應(yīng)用 在嘗試訪問受某項(xiàng)權(quán)限保護(hù)的數(shù)據(jù)之前怔檩,檢查您的應(yīng)用是否具有該權(quán)限
遵循請(qǐng)求權(quán)限方面的最佳做法
自動(dòng)重置權(quán)限
如果用戶在 Android 11 上幾個(gè)月未與應(yīng)用互動(dòng),系統(tǒng)會(huì)自動(dòng)重置應(yīng)用的敏感權(quán)限
以 Android 11 為目標(biāo)平臺(tái)且在后臺(tái)執(zhí)行大部分工作的應(yīng)用 要求用戶阻止系統(tǒng)重置應(yīng)用的權(quán)限
詳細(xì)了解自動(dòng)重置權(quán)限
后臺(tái)位置信息訪問權(quán)限
Android 11 更改了用戶向應(yīng)用授予后臺(tái)位置信息權(quán)限的方式
以 Android 11 為目標(biāo)平臺(tái)且需要訪問后臺(tái)位置信息的應(yīng)用 通過對(duì)權(quán)限請(qǐng)求方法的多次單獨(dú)調(diào)用怀樟,逐步請(qǐng)求前臺(tái)(粗略或精確)和后臺(tái)位置權(quán)限。必要時(shí)盆佣,說明用戶授予該權(quán)限所能得到的益處
詳細(xì)了解 Android 11 中的后臺(tái)位置信息訪問權(quán)限
軟件包可見性
Android 11 更改了應(yīng)用查詢同一設(shè)備上的其他已安裝應(yīng)用及與之互動(dòng)的方式
以 Android 11 為目標(biāo)平臺(tái)且與設(shè)備上的其他已安裝應(yīng)用交互的應(yīng)用 <queries> 元素添加到應(yīng)用的清單
詳細(xì)了解軟件包可見性
前臺(tái)服務(wù)類型
Android 11 更改了前臺(tái)服務(wù)訪問攝像頭和麥克風(fēng)數(shù)據(jù)的方式
以 Android 11 為目標(biāo)平臺(tái)且在前臺(tái)服務(wù)中訪問攝像頭或麥克風(fēng)的應(yīng)用 分別在訪問攝像頭數(shù)據(jù)和麥克風(fēng)數(shù)據(jù)的服務(wù)中聲明 cameramicrophone 前臺(tái)服務(wù)類型
詳細(xì)了解新的前臺(tái)服務(wù)類型

一次性權(quán)限

在 Android 11往堡,如果要求用戶給你地理位置的權(quán)限時(shí),用戶會(huì)有一個(gè)僅限這一次(only this time) 的額外選項(xiàng)共耍,表示用戶只給你的應(yīng)用一次這個(gè)權(quán)限虑灰。當(dāng)用戶下一次打開應(yīng)用的時(shí)候,系統(tǒng)會(huì)再次詢問權(quán)限痹兜。麥克風(fēng)和攝像頭也是一樣穆咐,存在一次性權(quán)限權(quán)限。

位置權(quán)限的特殊性

Android 11 對(duì)位置權(quán)限增加了前臺(tái)和后臺(tái)的區(qū)別。Android 11 之前对湃,應(yīng)用只是詢問用戶崖叫,給或者不給權(quán)限。但如果是應(yīng)用 針對(duì) Android 11 (Target SDK Level = 30)拍柒,應(yīng)先詢問用戶有沒有這個(gè)授權(quán)归露,然后用戶同意這個(gè)授權(quán)之后,需要再詢問用戶斤儿,還需要一個(gè)在后臺(tái)時(shí)獲取地理位置的權(quán)限剧包。

應(yīng)用包可見性

從前如果我們使用 PackageManger.getInstalledPackages(),他就會(huì)告訴開發(fā)者往果,應(yīng)用包的信息疆液。但是如果是 target 30,就有點(diǎn)改變了陕贮。如果是通過 getPakcageInfo 獲取自己應(yīng)用的信息堕油,是沒有影響的;如果要找手機(jī)安裝了哪些應(yīng)用肮之,這個(gè)行為就有改變了掉缺,它只會(huì)給你一個(gè)結(jié)果,這個(gè)結(jié)果就只有你的應(yīng)用本身戈擒,還有一些系統(tǒng)的應(yīng)用眶明,其他的應(yīng)用是看不見的。

分區(qū)存儲(chǔ)

分區(qū)存儲(chǔ)其實(shí)在 Android 10 已經(jīng)推出了筐高,但是去年推出的時(shí)候開發(fā)者還可以選擇性采用搜囱。但 Android 11 中,開發(fā)者就必須遵守分區(qū)存儲(chǔ)了柑土。

那么分區(qū)儲(chǔ)存是什么蜀肘?應(yīng)用里面如果有照片、視頻等媒體文件稽屏,可以把它放到公有的空間扮宠,讓其他的應(yīng)用也可以訪問我的文件,可以看我的視頻狐榔,可以看到我的照片坛增。但是其他私有文件都不允許其他應(yīng)用訪問,除非透過 FileProvider 等特別設(shè)置荒叼。

如果是使用分區(qū)存儲(chǔ)的話轿偎,彈窗要求授權(quán)的時(shí)候,會(huì)看見是從前我們是要求一個(gè)儲(chǔ)存所有文件的授權(quán)被廓,現(xiàn)在變成了要求文件和媒體的授權(quán)坏晦。

READ_PHONE_STATE 變更

READ_PHONE_STATE 權(quán)限將只能獲取電話相關(guān)的狀態(tài),不能獲取電話號(hào)碼。如需要獲取電話號(hào)碼昆婿,需要額外申請(qǐng) READ_PHONE_NUMBERS 權(quán)限球碉。

MAC 地址訪問限制

功能和API

文本和輸入(WindowInsetsAnimation

Android 11 引入了新的 API 以改進(jìn)輸入法 (IME) 的轉(zhuǎn)換,例如屏幕鍵盤仓蛆。這些 API 可讓您更輕松地調(diào)整應(yīng)用內(nèi)容睁冬,與 IME 的出現(xiàn)和消失以及狀態(tài)和導(dǎo)航欄等其他元素保持同步。

如需在聚焦至任何 EditText 時(shí)顯示 IME看疙,請(qǐng)調(diào)用 view.getInsetsController().show(Type.ime())豆拨。

如需隱藏 IME,請(qǐng)調(diào)用 view.getInsetsController().hide(Type.ime())能庆。

通過調(diào)用 view.getRootWindowInsets().isVisible(Type.ime()) 檢查 IME 當(dāng)前是否可見施禾。

<pre style="margin: 0px; tab-size: 4; white-space: pre-wrap;">view.setOnApplyWindowInsetsListener { view, insets ->
// 比如監(jiān)聽用戶輸入法是否彈出
}</pre>

無(wú)線調(diào)試

Android 11 支持通過 Android adb 從工作站以無(wú)線方式部署和調(diào)試應(yīng)用。例如搁胆,可以將可調(diào)試的應(yīng)用部署到多臺(tái)遠(yuǎn)程設(shè)備弥搞,而無(wú)需通過 USB 實(shí)際連接您的設(shè)備,從而避免常見的 USB 連接問題(例如驅(qū)動(dòng)程序安裝方面的問題)渠旁。

在主動(dòng)拍攝期間關(guān)閉通知提示音和振動(dòng)

從 Android 11 開始攀例,在主動(dòng)使用相機(jī)時(shí),您的應(yīng)用可以使用 setCameraAudioRestriction() 以僅關(guān)閉振動(dòng)顾腊、同時(shí)關(guān)閉聲音和振動(dòng)或都不關(guān)閉粤铭。

應(yīng)用進(jìn)程退出原因

Android 11 引入了 ActivityManager.getHistoricalProcessExitReasons() 方法,用于報(bào)告近期任何進(jìn)程終止的原因投慈。應(yīng)用可以使用此方法收集崩潰診斷信息承耿,例如進(jìn)程終止是由于 ANR、內(nèi)存問題還是其他原因所致伪煤。此外,還可以使用新的 setProcessStateSummary() 方法存儲(chǔ)自定義狀態(tài)信息凛辣,以便日后進(jìn)行分析抱既。

getHistoricalProcessExitReasons() 方法會(huì)返回 ApplicationExitInfo 類的實(shí)例,該類包含與應(yīng)用進(jìn)程終止相關(guān)的信息扁誓。通過對(duì)此類的實(shí)例調(diào)用 getReason()防泵,可以確定應(yīng)用進(jìn)程終止的原因。例如蝗敢,REASON_CRASH 的返回值表示應(yīng)用中發(fā)生了未處理的異常捷泞。如果應(yīng)用需要確保退出事件的唯一性,可以保留特定于應(yīng)用的標(biāo)識(shí)符寿谴,例如基于 getTimestamp() 方法的時(shí)間戳的哈希值锁右。

Android Studio 4.0

Motion Editor

MotionLayout API 擴(kuò)展了功能豐富的 ConstraintLayout ,來(lái)幫助開發(fā)者實(shí)現(xiàn)應(yīng)用中復(fù)雜的動(dòng)畫效果。在Android Studio 4.0中咏瑟,新的Motion Editor使此API的使用變得更加容易拂到,Motion Editor可以用來(lái)創(chuàng)建,編輯和預(yù)覽MotionLayout 動(dòng)畫码泞。不再需要?jiǎng)?chuàng)建和修改復(fù)雜的xml文件兄旬,使用Motion Editor就可以生成,而且支持編輯約束集余寥,過渡领铐,關(guān)鍵幀和視圖屬性。而且如果想要查看編輯器創(chuàng)建的代碼的話宋舷,只需要單擊一下即可罐孝。同樣方便的是,對(duì)于已經(jīng)使用過ConstraintLayout的開發(fā)人員來(lái)說肥缔,IDE可以輕松地將其轉(zhuǎn)換為MotionLayout莲兢。一個(gè)創(chuàng)建動(dòng)畫的效果可以參考下圖。

Layout Inspector

在debug模式下運(yùn)行你的應(yīng)用续膳,然后借助新的Layout Inspector工具可以查看你的應(yīng)用當(dāng)前顯示的布局結(jié)構(gòu)及數(shù)據(jù)顯示改艇,而且還可以查看視圖的實(shí)時(shí)3D效果圖來(lái)檢查布局的層次結(jié)構(gòu)。這個(gè)功能可以用來(lái)更好的檢查開發(fā)過程中遇到顯示問題坟岔。

可以通過菜單中的View > Tool Windows > Layout Inspector來(lái)打開Layout Inspector窗口谒兄。

Layout Validation

使用布局驗(yàn)證可以在多個(gè)不同尺寸,不同分辨率的屏幕上來(lái)比較UI的顯示效果社付,預(yù)覽布局承疲,以調(diào)整到最佳的顯示效果。

在Android Studio的右上角可以找到Layout Validation選項(xiàng)卡鸥咖。

混淆代碼的智能編輯器

在之前編寫混淆代碼時(shí)燕鸽,大概都復(fù)制粘貼的比較多,而在AS 4.0中提供了智能編輯器功能啼辣,不但在編寫混淆代碼會(huì)有自動(dòng)補(bǔ)全所有類啊研,方法和字段功能,而且還有語(yǔ)法突出顯示鸥拧,錯(cuò)誤檢查和提醒等功能党远。

更多特性詳見官方文檔

Android Preview

Android Studio

截圖來(lái)自2020上海GDG,僅作為學(xué)習(xí)記錄富弦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沟娱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子腕柜,更是在濱河造成了極大的恐慌济似,老刑警劉巖矫废,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異碱屁,居然都是意外死亡磷脯,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門娩脾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赵誓,“玉大人,你說我怎么就攤上這事柿赊×┕Γ” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵碰声,是天一觀的道長(zhǎng)诡蜓。 經(jīng)常有香客問我,道長(zhǎng)胰挑,這世上最難降的妖魔是什么蔓罚? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮瞻颂,結(jié)果婚禮上豺谈,老公的妹妹穿的比我還像新娘。我一直安慰自己贡这,他們只是感情好茬末,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盖矫,像睡著了一般丽惭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辈双,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天责掏,我揣著相機(jī)與錄音,去河邊找鬼辐马。 笑死拷橘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的喜爷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼萄唇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼檩帐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起另萤,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤湃密,失蹤者是張志新(化名)和其女友劉穎诅挑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泛源,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拔妥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了达箍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片没龙。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖缎玫,靈堂內(nèi)的尸體忽然破棺而出硬纤,到底是詐尸還是另有隱情,我是刑警寧澤赃磨,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布筝家,位于F島的核電站,受9級(jí)特大地震影響邻辉,放射性物質(zhì)發(fā)生泄漏溪王。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一值骇、第九天 我趴在偏房一處隱蔽的房頂上張望莹菱。 院中可真熱鬧,春花似錦雷客、人聲如沸芒珠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)皱卓。三九已至,卻和暖如春部逮,著一層夾襖步出監(jiān)牢的瞬間娜汁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工兄朋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掐禁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓颅和,卻偏偏與公主長(zhǎng)得像傅事,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子峡扩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345