Android Q 適配

后臺定位權(quán)限

AndroidQ新引入了后臺定位權(quán)限赵辕,是危險權(quán)限需要代碼動態(tài)申請

<!--允許App在后臺獲得位置信息-->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>

這個權(quán)限必須配合下面兩個權(quán)限使用,單獨寫沒有任何效果

<!--允許獲得精確的GPS定位-->

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

<!--允許獲得粗略的基站網(wǎng)絡(luò)定位-->

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

Google加入這個權(quán)限邻遏,意在將App是否能定位的權(quán)利分為前臺和后臺分別交給用戶決定,減少App在后臺靜默定位的可能性,減少用戶的個人信息的泄露森渐。
Android Q后臺定位權(quán)限的更改總而言之就是,如果項目中沒有用到后臺實時定位冒晰,則并無多大改動同衣;如果涉及到后臺定位,那就需要同定位權(quán)限一同去申請授權(quán)即可壶运。

唯一標(biāo)識符更改

AndroidQ對設(shè)備的系統(tǒng)標(biāo)識增加了更多的限制和修改耐齐,AndroidQ將徹底禁止第三方應(yīng)用獲取設(shè)備的imei序列號,無論你是以target多少版本編譯的應(yīng)用,都不能在AndroidQ的設(shè)備上獲得設(shè)備標(biāo)識符埠况。所以如果你只是想得到唯一標(biāo)識符耸携,請不要再加入READ_PHONE_STATE權(quán)限,不會生效辕翰。
如果你的應(yīng)用可以加入系統(tǒng)級應(yīng)用夺衍,那么你需要加入權(quán)限

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

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

READ_PRIVILEGED_PHONE_STATE為系統(tǒng)級別權(quán)限,第三方應(yīng)用加入無效喜命。
如果依然使用獲取imel相關(guān)的代碼時

如果應(yīng)用以 Android Q 為目標(biāo)平臺沟沙,則會發(fā)生 SecurityException。

如果應(yīng)用以 Android 9(API 級別 28)或更低版本為目標(biāo)平臺渊抄,則相應(yīng)方法會返回 null 或占位符數(shù)據(jù)(如果應(yīng)用具有 READ_PHONE_STATE 權(quán)限)尝胆。否則,會發(fā)生 SecurityException护桦。
使用 Android 標(biāo)識符的最佳做法:https://developer.android.com/training/articles/user-data-ids
一個不變和基本不重復(fù)的UUID方法:

public static String getUUID() {
 
String serial = null;
 
String m_szDevIDShort = "35" +
        Build.BOARD.length() % 10 + Build.BRAND.length() % 10 +
 
        Build.CPU_ABI.length() % 10 + Build.DEVICE.length() % 10 +
 
        Build.DISPLAY.length() % 10 + Build.HOST.length() % 10 +
 
        Build.ID.length() % 10 + Build.MANUFACTURER.length() % 10 +
 
        Build.MODEL.length() % 10 + Build.PRODUCT.length() % 10 +
 
        Build.TAGS.length() % 10 + Build.TYPE.length() % 10 +
 
        Build.USER.length() % 10; //13 位
 
try {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        serial = android.os.Build.getSerial();
    } else {
        serial = Build.SERIAL;
    }
    //API>=9 使用serial號
    return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
} catch (Exception exception) {
    //serial需要一個初始化
    serial = "serial"; // 隨便一個初始化
}
    //使用硬件信息拼湊出來的15位號碼
    return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
}

后臺Activity啟動限制

AndroidQ加強(qiáng)了關(guān)于后臺Activity的啟動限制含衔,App不可以隨意的從后臺拉起Activity:https://developer.android.com/preview/privacy/background-activity-starts
從 Android Q 測試版 5 開始,此項變更具有以下特性:
如果您在未與用戶互動的情況下啟動 Activity二庵,則會影響您的應(yīng)用
使用由通知觸發(fā)的 Activity 進(jìn)行緩解
通過開啟允許系統(tǒng)執(zhí)行后臺活動開發(fā)者選項停用限制
該行為變更仍會在設(shè)備升級到 Android Q 后生效贪染。

分區(qū)存儲

  • 為了讓用戶更好地控制自己的文件,減少文件混亂情況催享,Android Q 更改了應(yīng)用對設(shè)備外部存儲設(shè)備中的文件(例如存儲在路徑 /sdcard 下的文件)的訪問方式杭隙。Android Q 會繼續(xù)使用 READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE 權(quán)限,這些權(quán)限與面向用戶的存儲運行時權(quán)限相對應(yīng)因妙。
    不過痰憎,默認(rèn)情況下,以 Android Q 為目標(biāo)平臺的應(yīng)用(以及選擇接受這些變更的應(yīng)用)在訪問外部存儲設(shè)備中的文件時會進(jìn)入過濾視圖攀涵。此類應(yīng)用只能查看特定于應(yīng)用的目錄和特定類型的媒體铣耘,因此應(yīng)用無需請求任何其他用戶權(quán)限。

  • 在早期測試版(READ_MEDIA_IMAGES以故、READ_MEDIA_AUDIO 和 READ_MEDIA_VIDEO)中引入的特定于媒體集合的權(quán)限現(xiàn)已過時蜗细。

相機(jī)和網(wǎng)絡(luò)連接變更

訪問所有相機(jī)信息都需要獲得權(quán)限

Android Q 更改了 getCameraCharacteristics() 方法默認(rèn)返回的信息的廣度。具體而言怒详,您的應(yīng)用必須具有 CAMERA 權(quán)限才能訪問此方法的返回值中可能包含的設(shè)備特定元數(shù)據(jù)炉媒。

對啟用和停用 WLAN 的限制

以 Android Q 為目標(biāo)平臺的應(yīng)用無法啟用或停用 WLAN。WifiManager.setWifiEnabled() 方法始終返回 false昆烁。

如果需要吊骤,請使用設(shè)置面板提示用戶啟用和停用 WLAN。

WLAN 網(wǎng)絡(luò)配置限制

為了保護(hù)用戶隱私静尼,現(xiàn)在只有系統(tǒng)應(yīng)用和設(shè)備政策控制器 (DPC) 支持手動配置系統(tǒng)的 WLAN 網(wǎng)絡(luò)列表水援。給定 DPC 可以是設(shè)備所有者或配置文件所有者密强。

如果您的應(yīng)用不屬于以上其中一個類別,而且以 Android Q 為目標(biāo)平臺蜗元,則下列方法將不再返回有用數(shù)據(jù):

  • getConfiguredNetworks() 方法始終返回空列表或渤。
  • 每個返回整數(shù)值的網(wǎng)絡(luò)操作方法(addNetwork()updateNetwork())始終返回 -1。
  • 每個返回布爾值的網(wǎng)絡(luò)操作(removeNetwork()奕扣、reassociate()薪鹦、enableNetwork()disableNetwork()惯豆、reconnect()disconnect())始終返回 false池磁。

注意:如果運營商應(yīng)用調(diào)用 getConfiguredNetworks(),系統(tǒng)便會返回僅包含運營商配置的網(wǎng)絡(luò)的列表楷兽。

如果您的應(yīng)用需要連接到 WLAN 網(wǎng)絡(luò)地熄,請使用以下備用方法:

  • 要觸發(fā)與 WLAN 網(wǎng)絡(luò)的即時本地連接,請在標(biāo)準(zhǔn) NetworkRequest 對象中使用 WifiNetworkSpecifier芯杀。
  • 要添加 WLAN 網(wǎng)絡(luò)以便考慮為用戶提供互聯(lián)網(wǎng)訪問權(quán)限端考,請使用 WifiNetworkSuggestion 對象。您可以通過分別調(diào)用 addNetworkSuggestions()removeNetworkSuggestions() 添加和移除在自動連接網(wǎng)絡(luò)選擇對話框中顯示的網(wǎng)絡(luò)揭厚。這些方法不需要任何位置權(quán)限却特。

telephony API、WLAN API 和 Bluetooth API 需要精確位置權(quán)限

除非您的應(yīng)用具有 ACCESS_FINE_LOCATION 權(quán)限筛圆,否則應(yīng)用在 Android Q 上運行時無法使用 WLAN API裂明、Wi-Fi Aware API 或 Bluetooth API 中的多種方法。下面列出了受影響的方法太援。

注意:如果您的應(yīng)用在 Android Q 上運行但以 Android 9(API 級別 28)或更低版本為目標(biāo)平臺闽晦,則只要您的應(yīng)用具有 ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION 權(quán)限,您就可以使用受影響的 API提岔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尼荆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子唧垦,更是在濱河造成了極大的恐慌,老刑警劉巖液样,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件振亮,死亡現(xiàn)場離奇詭異,居然都是意外死亡鞭莽,警方通過查閱死者的電腦和手機(jī)坊秸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澎怒,“玉大人褒搔,你說我怎么就攤上這事。” “怎么了星瘾?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵走孽,是天一觀的道長。 經(jīng)常有香客問我琳状,道長磕瓷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任念逞,我火速辦了婚禮困食,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翎承。我一直安慰自己硕盹,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布叨咖。 她就那樣靜靜地躺著瘩例,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芒澜。 梳的紋絲不亂的頭發(fā)上仰剿,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機(jī)與錄音痴晦,去河邊找鬼南吮。 笑死,一個胖子當(dāng)著我的面吹牛誊酌,可吹牛的內(nèi)容都是我干的部凑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碧浊,長吁一口氣:“原來是場噩夢啊……” “哼涂邀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起箱锐,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤比勉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后驹止,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浩聋,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年臊恋,在試婚紗的時候發(fā)現(xiàn)自己被綠了衣洁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡抖仅,死狀恐怖坊夫,靈堂內(nèi)的尸體忽然破棺而出砖第,到底是詐尸還是另有隱情,我是刑警寧澤环凿,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布梧兼,位于F島的核電站,受9級特大地震影響拷邢,放射性物質(zhì)發(fā)生泄漏袱院。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一瞭稼、第九天 我趴在偏房一處隱蔽的房頂上張望忽洛。 院中可真熱鬧,春花似錦环肘、人聲如沸欲虚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽复哆。三九已至,卻和暖如春腌零,著一層夾襖步出監(jiān)牢的瞬間梯找,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工益涧, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留锈锤,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓闲询,卻偏偏與公主長得像久免,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扭弧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

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