Android 9.0 適配

所有應(yīng)用:無(wú)論 targetSdkVersion 是否小于 28脓钾,都需要修改應(yīng)用以正確支持這些變更。

API 28+ 應(yīng)用的行為變更:指 targetSdkVersion 為 28 或更高的應(yīng)用病蛉。

一: 所有應(yīng)用

1. 后臺(tái)對(duì)傳感器的訪(fǎng)問(wèn)受限

為了增強(qiáng)用戶(hù)隱私椿息,Android 9 限制后臺(tái)應(yīng)用訪(fǎng)問(wèn)用戶(hù)隱私數(shù)據(jù)漓穿,如麥克風(fēng)或攝像頭、連續(xù)報(bào)告模式的傳感器(加速度計(jì)和陀螺儀)残黑、如果需要在運(yùn)行 Android 9 的設(shè)備上檢測(cè)傳感器事件党瓮,請(qǐng)使用前臺(tái)服務(wù)俗冻。

2. 限制訪(fǎng)問(wèn)通話(huà)記錄

如果需要訪(fǎng)問(wèn)通話(huà)記錄或者需要處理去電怨咪,必須向 CALL_LOG 權(quán)限組明確請(qǐng)求這些權(quán)限僚饭。 否則會(huì)發(fā)生 SecurityException。

3. 限制訪(fǎng)問(wèn)電話(huà)號(hào)碼

要從手機(jī)狀態(tài)中讀取電話(huà)號(hào)碼冰木,請(qǐng)根據(jù)您的用例更新應(yīng)用以請(qǐng)求必要的權(quán)限:

  • 要通過(guò) PHONE_STATE Intent 操作讀取電話(huà)號(hào)碼穷劈,同時(shí)需要 READ_CALL_LOG 權(quán)限和 READ_PHONE_STATE 權(quán)限。

  • 要從 onCallStateChanged() 中讀取電話(huà)號(hào)碼踊沸,只需要 READ_CALL_LOG 權(quán)限歇终。 不需要 READ_PHONE_STATE 權(quán)限。

4. 啟動(dòng)Activity

在9.0 中逼龟,不能直接非 Activity 環(huán)境中(比如Service评凝,Application)啟動(dòng) Activity,需要在 Intent 中添加標(biāo)志 FLAG_ACTIVITY_NEW_TASK

Intent intent = new Intent(this, TestActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

5. 劉海屏適配

如果你的頁(yè)面不需要全屏顯示(顯示的內(nèi)容不在狀態(tài)欄區(qū)域)腺律,那么不需要額外的適配工作奕短。
如果你想利用起來(lái)劉海區(qū)域,就需要獲取劉海位置等信息進(jìn)行適配匀钧。
顯示屏缺口支持

6. 對(duì)使用非 SDK 接口的限制


二:API 28+ 應(yīng)用的行為變更

1. 前臺(tái)服務(wù)

Android 9 開(kāi)始翎碑,啟動(dòng)前臺(tái)服務(wù)必須請(qǐng)求 FOREGROUND_SERVICE 權(quán)限。這是普通權(quán)限之斯,只要在清單文件中聲明即可日杈。

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

2. 構(gòu)建序列號(hào)棄用

在 Android 9 中,Build.SERIAL 始終設(shè)為 "UNKNOWN",以保護(hù)用戶(hù)隱私莉擒。
如果需要訪(fǎng)問(wèn)設(shè)備的硬件序列號(hào)酿炸,應(yīng)改為請(qǐng)求 READ_PHONE_STATE 權(quán)限,然后調(diào)用 getSerial()涨冀。

3. 默認(rèn)啟用網(wǎng)絡(luò)傳輸層安全協(xié)議 (TLS)填硕。

如果應(yīng)用以 Android 9 或更高版本為目標(biāo)平臺(tái),則 isCleartextTrafficPermitted() 方法默認(rèn)返回 false鹿鳖。如果需要針對(duì)特定網(wǎng)域啟用明文扁眯,則您必須在應(yīng)用的網(wǎng)絡(luò)安全配置中,針對(duì)這些網(wǎng)域明確將 cleartextTrafficPermitted 設(shè)置為 true栓辜。

解決方案:

(1)后臺(tái)接口改用 https 請(qǐng)求

(2)targetSdkVersion 降到 27 或以下

(3)在清單文件 application 節(jié)點(diǎn)下添加 android:usesCleartextTraffic="true"
原來(lái)默認(rèn)為 true恋拍,但在 Android 9.0 中默認(rèn)值改為了 false,因此將配置手動(dòng)設(shè)為 true 即可解決明文傳輸被限制的問(wèn)題

(4)更改網(wǎng)絡(luò)安全配置:

首先在 res 目錄下新建 xml 文件夾藕甩,添加 network_security_config.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
        <!-- 全部域名使用 http -->
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

也可以指定部分支持的 http 域名:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <!-- 部分域名使用 http -->
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">secure.example.com</domain>
        <domain includeSubdomains="true">cdn.example1.com</domain>
    </domain-config>
</network-security-config>

AndroidManifest.xml 中的 application 節(jié)點(diǎn)添加該配置:

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config">
            ...
    </application>
</manifest>

4. Apache HTTP 客戶(hù)端棄用

從 Android 9.0 開(kāi)始,默認(rèn)情況下該庫(kù)已從 bootclasspath 中移除周荐,要想繼續(xù)使用 Apache HTTP狭莱,需要在應(yīng)用的 AndroidManifest.xml 文件中添加:

<manifest ... >
    <application>
        <uses-library android:name="org.apache.http.legacy" android:required="false"/>
            ...
    </application>
</manifest>

5. 多進(jìn)程使用 WebView 無(wú)法共用同一數(shù)據(jù)目錄

按進(jìn)程分設(shè)基于網(wǎng)絡(luò)的數(shù)據(jù)目錄

參考:
Android 9.0 適配指南
Android 9 功能和 API

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市概作,隨后出現(xiàn)的幾起案子腋妙,更是在濱河造成了極大的恐慌,老刑警劉巖讯榕,帶你破解...
    沈念sama閱讀 223,002評(píng)論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骤素,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡愚屁,警方通過(guò)查閱死者的電腦和手機(jī)济竹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)霎槐,“玉大人送浊,你說(shuō)我怎么就攤上這事∏鸬” “怎么了袭景?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,787評(píng)論 0 365
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)闭树。 經(jīng)常有香客問(wèn)我耸棒,道長(zhǎng),這世上最難降的妖魔是什么报辱? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,237評(píng)論 1 300
  • 正文 為了忘掉前任与殃,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奈籽。我一直安慰自己饥侵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布衣屏。 她就那樣靜靜地躺著躏升,像睡著了一般。 火紅的嫁衣襯著肌膚如雪狼忱。 梳的紋絲不亂的頭發(fā)上膨疏,一...
    開(kāi)封第一講書(shū)人閱讀 52,821評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音钻弄,去河邊找鬼佃却。 笑死,一個(gè)胖子當(dāng)著我的面吹牛窘俺,可吹牛的內(nèi)容都是我干的饲帅。 我是一名探鬼主播,決...
    沈念sama閱讀 41,236評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼瘤泪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼灶泵!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起对途,我...
    開(kāi)封第一講書(shū)人閱讀 40,196評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤赦邻,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后实檀,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體惶洲,經(jīng)...
    沈念sama閱讀 46,716評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評(píng)論 3 343
  • 正文 我和宋清朗相戀三年膳犹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恬吕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,928評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡镣奋,死狀恐怖币呵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情侨颈,我是刑警寧澤余赢,帶...
    沈念sama閱讀 36,583評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站哈垢,受9級(jí)特大地震影響妻柒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜耘分,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評(píng)論 3 336
  • 文/蒙蒙 一举塔、第九天 我趴在偏房一處隱蔽的房頂上張望绑警。 院中可真熱鬧,春花似錦央渣、人聲如沸计盒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,755評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)北启。三九已至,卻和暖如春拔第,著一層夾襖步出監(jiān)牢的瞬間咕村,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,869評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工蚊俺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留懈涛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,378評(píng)論 3 379
  • 正文 我出身青樓泳猬,卻偏偏與公主長(zhǎng)得像批钠,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子暂殖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容