欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

android兼容,Android兼容性

聚焦 Android 11: Android 11 應(yīng)用兼容性

作者 / Android 產(chǎn)品經(jīng)理 Diana Wong

創(chuàng)新互聯(lián)建站專注于宜陽企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城系統(tǒng)網(wǎng)站開發(fā)。宜陽網(wǎng)站建設(shè)公司,為宜陽等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

在往期 #11WeeksOfAndroid 系列文章中我們介紹了 聯(lián)系人和身份 、 隱私和安全 ,本期將聚焦 Android 11 兼容性 。我們將為大家陸續(xù)帶來 #11WeeksOfAndroid 內(nèi)容,深入探討 Android 的各個關(guān)鍵技術(shù)點,您不會錯過任何重要內(nèi)容。

本期我們將重點探討 Android 11 兼容性這一對所有開發(fā)者都非常重要的主題。對于 Android, 應(yīng)用兼容性 一詞指應(yīng)用可以在特定版本的 Android (通常是最新版本) 上正常運行。

您可以前往官方網(wǎng)站詳細(xì)獲取可幫助您進行兼容性測試的資源,以及本期所有關(guān)于該領(lǐng)域的實用內(nèi)容和資源!

在每次版本更新中,我們都希望盡量減少應(yīng)用適配 Android 所需的工作。在 Android 11 中,我們添加了新的流程、開發(fā)者工具和版本發(fā)布里程碑,以幫助我們最大程度地減少平臺更新帶來的影響,更輕松實現(xiàn)應(yīng)用的兼容性。

請繼續(xù)閱讀,詳細(xì)了解我們?nèi)绾魏喕?Android 11 中的應(yīng)用測試和調(diào)試流程。

測試應(yīng)用是否兼容 Android 新版本可能面臨很多挑戰(zhàn),尤其是應(yīng)用在受到多個平臺變更影響的情況下。此過程中可能會出現(xiàn)很多問題:

開發(fā)者社區(qū)為我們提供了大量相關(guān)問題的優(yōu)質(zhì)反饋。在 Android 11 中,我們?yōu)槠脚_添加了以下新工具,并在 Android Studio 中添加了新功能,因此您可以更加輕松的進行測試。

和往年的更新一樣,Android 11 的一些平臺變更可能會影響您的應(yīng)用。盡管這些變更對于提升平臺性能至關(guān)重要,但我們會盡可能將這些變更安排在平臺的最新 targetSDKVersion 之后,以便減少對您的應(yīng)用的直接改動。在 Android 11 中,我們還會將更多此類平臺變更添加到新的 兼容性框架 中。

您可以使用全新開發(fā)者工具,針對包含在兼容性框架內(nèi)的變更對應(yīng)用進行測試和調(diào)試。

例如,我們已將包含在兼容性框架內(nèi)的變更設(shè)為可切換,您可以通過設(shè)備的開發(fā)者選項或使用 Android ADB 強制啟用或停用單個變更。Android 平臺會自動調(diào)整內(nèi)部 API 邏輯,因此您無需更改 targetSDKVersion 或重新編譯應(yīng)用,即可執(zhí)行基本測試。此外,您可以隔離各項變更,從而節(jié)省發(fā)現(xiàn)和調(diào)試應(yīng)用中問題所需的時間。

在切換變更的啟用/停用狀態(tài)之前,您應(yīng)該通讀 行為變更列表 ,確定哪些變更可能會影響您的應(yīng)用。包含在兼容性框架內(nèi)的變更已在變更描述前列出相應(yīng)的 Change ID 和 Change Name。

一般來說,我們建議您從 影響所有應(yīng)用的行為變更 開始測試,因為無論 targetSDKVersion 如何,這些變更都可能對您的應(yīng)用造成影響。我們用下面這個 targetSDKVersion 控制的變更為例,說明您可以如何在不使用其他 targetSDK 重編譯應(yīng)用的情況下,對這些變更進行測試。

在 后臺位置訪問變更 中,請求始終在后臺訪問位置的應(yīng)用會受影響。如果您的應(yīng)用受到這一變更的影響,那么從該變更開始測試是不錯的選擇。此變更的名稱為 BACKGROUND_RATIONALE_CHANGE_ID,變更 ID 為 147316723。您需要先使用這些信息啟用此變更,然后再測試應(yīng)用因此受到的影響。

確定要測試的變更后,您可以使用開發(fā)者選項切換此變更的啟用/停用狀態(tài)。如要使用開發(fā)者選項,請打開設(shè)備上的 "設(shè)置" 應(yīng)用,導(dǎo)航至 系統(tǒng) 高級 開發(fā)者選項 應(yīng)用兼容性變更 。

開發(fā)者選項中可切換的平臺變更,后臺位置訪問變更已啟用

在本例中,BACKGROUND_RATIONALE_CHANGE_ID 是唯一已啟用的變更,旨在最大程度縮小應(yīng)用可能遇到的各種問題的原因范圍。

您也可以使用 Logcat 或 ADB 識別已啟用的變更 ,或 使用 ADB 切換變更的啟用/停用狀態(tài) 。請注意,您只能在使用可調(diào)試應(yīng)用時切換變更。

啟用變更后,您可以使用常用的測試工作流來測試和調(diào)試應(yīng)用。如遇到問題,請查看日志,確定問題的原因。如果不確定問題是否由已啟用的平臺變更引起,您可以嘗試停用此變更,然后重新測試應(yīng)用的同一模塊。

如需了解其他相關(guān)示例,您可以觀看有關(guān) 測試 Android 11 中平臺變更的視頻 ,或閱讀 官方文檔 。

除了在新平臺上手動進行測試外,我們還簡化了使用 Android Studio 在最新 Android 系統(tǒng)上運行自動化測試的流程。

從 Android Studio 4.2 開始,我們實現(xiàn)了在多個實體或虛擬設(shè)備上并行運行插樁測試 (instrumentation tests)。現(xiàn)在,您可以在運行測試的過程中,從目標(biāo)設(shè)備下拉菜單中選擇 多個設(shè)備 。

此功能旨在幫助您在開發(fā)周期中盡早發(fā)現(xiàn)問題,并讓您能夠比較不同 Android 設(shè)備之間的差異。您可以使用 視圖 工具窗口 運行 下的新 測試矩陣 ,研究這些測試的結(jié)果。

請觀看有關(guān) 使用 Android Studio 測試應(yīng)用兼容性的視頻 ,或閱讀 官方文檔 。

我們建議您嘗試這些新工具,并 向我們發(fā)送反饋 ,告訴我們這些工具對您是否有用。我們希望這些工具能幫助您更輕松地測試 Android 11 應(yīng)用兼容情況。

Android兼容性適配(一)—— 設(shè)備兼容性概覽

Android 適用于眾多類型的設(shè)備,從手機到平板電腦和電視都能搭載使用。作為開發(fā)者,如此廣泛的設(shè)備類型能為您的應(yīng)用帶來廣大的潛在受眾群體。為了能在所有這些設(shè)備上順利運行,應(yīng)用應(yīng)該容許部分設(shè)備功能的變化,并提供可適應(yīng)不同屏幕配置的靈活界面。

隨著您進一步閱讀 Android 開發(fā)相關(guān)內(nèi)容,您可能會在各種語境下遇到“兼容性”一詞。兼容性有兩種類型:設(shè)備兼容性和應(yīng)用兼容性。

作為應(yīng)用開發(fā)者,您無需擔(dān)心設(shè)備是否兼容 Android,因為只有與 Android 兼容的設(shè)備才會附帶 Google Play 商店或該設(shè)備的官方手機應(yīng)用市場。因此,您可以放心,通過Google Play 商店和官方手機應(yīng)用市場安裝您的應(yīng)用的用戶使用的是 Android 兼容設(shè)備。

不過,您確實需要考慮您的應(yīng)用是否兼容每一種可能的設(shè)備配置。由于 Android 以各種設(shè)備配置運行,因此部分功能并不適用于所有設(shè)備。例如,某些設(shè)備可能未配備羅盤傳感器。如果應(yīng)用的核心功能需要使用羅盤傳感器,那么應(yīng)用只能與帶有羅盤傳感器的設(shè)備兼容。

應(yīng)用可通過平臺 API 利用 Android 支持的各種功能。有些功能基于硬件(例如羅盤傳感器),有些功能基于軟件(如應(yīng)用窗口微件),有些功能則依賴于平臺版本。并非每臺設(shè)備都支持所有功能,因此您可能需要根據(jù)應(yīng)用所需的功能控制應(yīng)用在設(shè)備上的可用性。

要盡可能擴大應(yīng)用的用戶群,您應(yīng)設(shè)法使用單個 APK 支持盡可能多的設(shè)備配置。在大多數(shù)情況下,要實現(xiàn)這一目標(biāo),您可以在運行時停用可選功能,并為應(yīng)用資源提供針對不同配置的替代選項(例如針對不同屏幕尺寸的不同布局)。不過,如果需要,您可以根據(jù)以下設(shè)備特征,通過 Google Play 商店限制應(yīng)用在設(shè)備上的可用性:

為了讓您根據(jù)設(shè)備功能管理應(yīng)用的可用性,Android 為可能并不適用于所有設(shè)備的任何硬件或軟件功能定義了功能 ID。例如,羅盤傳感器的功能 ID 為 FEATURE_SENSOR_COMPASS,而應(yīng)用微件的功能 ID 為 FEATURE_APP_WIDGETS。

根據(jù)需要,要在用戶的設(shè)備不具備特定功能時阻止用戶安裝您的應(yīng)用,您可以通過應(yīng)用清單文件中的uses-feature元素聲明這一點。

例如,如果您的應(yīng)用在沒有羅盤傳感器的設(shè)備上沒有意義,您可以使用以下清單標(biāo)記聲明需要羅盤傳感器:

Google Play 商店會將您的應(yīng)用所需的功能與每個用戶的設(shè)備上可用的功能進行比較,以確定您的應(yīng)用是否與每臺設(shè)備兼容。如果設(shè)備不具備您的應(yīng)用所需的所有功能,則用戶無法安裝您的應(yīng)用。

但是,如果應(yīng)用的主要功能不需要某項設(shè)備功能,則應(yīng)將required屬性設(shè)置為 "false"并在運行時檢查是否有該設(shè)備功能。如果應(yīng)用功能在當(dāng)前設(shè)備上不可用,請適當(dāng)降級相應(yīng)的應(yīng)用功能。例如,您可以通過調(diào)用hasSystemFeature()來查詢功能是否可用,如下所示:

Java

Kotlin

不同的設(shè)備可能會運行不同版本的 Android 平臺,例如 Android 4.0 或 Android 4.4。每個后續(xù)的平臺版本通常會添加之前版本中不可用的新 API。為表明可用的 API 集,每個平臺版本都會指定API 級別。例如,Android 1.0 是 API 級別 1,而 Android 4.4 是 API 級別 19。

通過 API 級別,您可以使用uses-sdk清單標(biāo)記及其minSdkVersion屬性來聲明應(yīng)用兼容的最低版本。例如,Android 4.0(API 級別 14)中添加了 日歷提供程序 API。如果您的應(yīng)用在沒有這些 API 的情況下無法運行,您應(yīng)將 API 級別 14 聲明為應(yīng)用的最低支持版本。

minSdkVersion屬性聲明應(yīng)用兼容的最低版本,targetSdkVersion屬性聲明應(yīng)用經(jīng)過優(yōu)化后適用的最高版本。

不過,請注意uses-sdk元素中的屬性會被替換為build.gradle文件中的相應(yīng)屬性。因此,如果您使用的是 Android Studio,則必須在其中指定minSdkVersion和targetSdkVersion值:

要詳細(xì)了解build.gradle文件,請參閱 如何配置編譯版本 。

每個后續(xù)版本的 Android 都為使用之前平臺版本的 API 構(gòu)建的應(yīng)用提供兼容性,因此您的應(yīng)用應(yīng)始終與未來版本的 Android 兼容,同時使用已記錄的 Android API。

注意 : targetSdkVersion 屬性不會阻止您的應(yīng)用安裝在高于指定值的平臺版本上,但它很重要,因為它向系統(tǒng)指示您的應(yīng)用是否應(yīng)繼承較新版本中的行為更改。如果您不將 targetSdkVersion 更新到最新版本,則系統(tǒng)會認(rèn)為您的應(yīng)用在最新版本上運行時需要一些向后兼容性行為。例如,在 Android 4.4 中的行為更改 中,使用 AlarmManager API 創(chuàng)建的鬧鐘現(xiàn)在默認(rèn)不精確,因此系統(tǒng)可以批量處理應(yīng)用鬧鐘并節(jié)省系統(tǒng)電量,但如果您的目標(biāo) API 級別低于“19”,則系統(tǒng)會為您的應(yīng)用保留之前的 API 行為。

不過,如果您的應(yīng)用使用的是較新平臺版本中添加的 API,但其主要功能并不需要這些 API,則應(yīng)在運行時檢查 API 級別,并在 API 級別過低時適當(dāng)降級相應(yīng)的功能。在這種情況下,請將 minSdkVersion 盡量設(shè)置為適用于應(yīng)用主要功能的最低值,然后將當(dāng)前系統(tǒng)的版本 SDK_INT 與 Build.VERSION_CODES 中對應(yīng)于您要檢查的 API 級別的一個代號常量進行比較。例如:

Android 可在各種尺寸的設(shè)備上運行,包括手機、平板電腦和電視。為了按照屏幕類型對設(shè)備進行分類,Android 為每種設(shè)備定義了兩個特征:屏幕尺寸(屏幕的物理尺寸)和屏幕密度(屏幕上像素的物理密度,稱為 DPI)。為了簡化不同的配置,Android 將這些變體歸納成組,使它們更容易作為定位目標(biāo):

四種廣義的尺寸:小、標(biāo)準(zhǔn)、大和特大。

還有幾種廣義的密度:mdpi(中)、hdpi(高)、xhdpi(超高)、xxhdpi(超超高)等。

默認(rèn)情況下,您的應(yīng)用會兼容所有屏幕尺寸和密度,因為系統(tǒng)會根據(jù)需要對各個屏幕的界面布局和圖片資源進行相應(yīng)的調(diào)整。不過,您應(yīng)針對不同的屏幕尺寸添加專門的布局,針對常見的屏幕密度添加優(yōu)化的位圖圖片,以優(yōu)化每種屏幕配置的用戶體驗。

Android外部存儲兼容(Android12)

Android 12之后系統(tǒng)就不允許自由訪問外部存儲了,只能訪問指定的外部存儲存儲,例如:context.getExternalFilesDir(Environment.type)下的外部存儲,或者其他/Android/data/data下的外部存儲。

老規(guī)矩了,訪問外部存儲前需要申請權(quán)限。

此時不需要申請權(quán)限了,可以直接訪問。如果你要分享就需要添加FileProvider配置。

WRITE_EXTERNAL_STORAGE when targeting Android 10

小米手機怎么開啟安卓12兼容模式

打開瀏覽器以后,點擊菜單中偏好設(shè)置;進入偏好設(shè)置后,點擊進入高級設(shè)置標(biāo)簽,勾選顯示開發(fā)的菜單;進入開發(fā)的菜單中,找到用戶代理,可以看到兼容模式,點擊進入,并且開啟兼容模式。

拓展資料:

兼容性:

兼容性(compatibility)是指硬件之間、軟件之間或是軟硬件組合系統(tǒng)之間的相互協(xié)調(diào)工作的程度。兼容的概念比較廣,相對于硬件來說,幾種不同的電腦部件,如CPU、主板、顯示卡等,如果在工作時能夠相互配合、穩(wěn)定地工作,就說它們之間的兼容性比較好,反之就是兼容性不好。

對于軟件的兼容性,指的是指某個軟件能穩(wěn)定地工作在若干個操作系統(tǒng)之中,而不會出現(xiàn)意外的退出等問題。

在軟件行業(yè),一種是指某個軟件能穩(wěn)定地工作在若干個操作系統(tǒng)之中,就說明這個軟件對于各系統(tǒng)有良好的兼容性。

再就是在多任務(wù)操作系統(tǒng)中,幾個同時運行的軟件之間,如果能穩(wěn)定地工作,不頻繁崩潰、死機,則稱之為它們之間的兼容性良好,反之兼容性不好。另一種就是軟件共享,幾個軟件之間無需復(fù)雜的轉(zhuǎn)換,即能方便地共享相互間的數(shù)據(jù),也稱為兼容。

Android 12 兼容之行為變更

Android 12 平臺包含一些行為變更,這些變更可能會影響您的應(yīng)用。以下行為變更將影響在 Android 12 上運行的 所有應(yīng)用 ,無論采用哪種 targetSdkVersion 都不例外。您應(yīng)該測試您的應(yīng)用,然后根據(jù)需要進行修改,以適當(dāng)?shù)刂С诌@些變更。

此外,請務(wù)必查看 僅影響以 Android 12 為目標(biāo)平臺的應(yīng)用的行為變更 列表。

在搭載 Android 12 及更高版本的設(shè)備上, 滾動事件 的視覺行為發(fā)生了變化。

在 Android 11 及更低版本中,滾動事件會使視覺元素發(fā)光。在 Android 12 及更高版本中,發(fā)生拖動事件時,視覺元素會拉伸和反彈;發(fā)生快速滑動事件時,它們會快速滑動和反彈。

如需了解詳情,請參閱 動畫演示滾動手勢 指南。

如果您之前在 Android 11 或更低版本中實現(xiàn)了自定義啟動畫面,則需要將您的應(yīng)用遷移到 SplashScreen API,以確保它從 Android 12 開始正確顯示。如果不遷移您的應(yīng)用,則可能會導(dǎo)致應(yīng)用啟動體驗變差或出乎預(yù)期。

如需了解相關(guān)說明,請參閱 將現(xiàn)有的啟動畫面實現(xiàn)遷移到 Android 12 。

此外,從 Android 12 開始,在所有應(yīng)用的 冷啟動 和 溫啟動 期間,系統(tǒng)始終會應(yīng)用新的 Android 系統(tǒng)默認(rèn)啟動畫面 。 默認(rèn)情況下,此系統(tǒng)默認(rèn)啟動畫面由應(yīng)用的啟動器圖標(biāo)元素和主題的 windowBackground (如果是單色)構(gòu)成。

如需了解詳情,請參閱 啟動畫面開發(fā)者指南 。

從 Android 12(API 級別 31)開始,僅當(dāng)您的應(yīng)用獲準(zhǔn)處理某個通用網(wǎng)絡(luò) intent 中包含的特定網(wǎng)域時,該網(wǎng)絡(luò) intent 才會解析為應(yīng)用中的 activity。如果您的應(yīng)用未獲準(zhǔn)處理相應(yīng)的網(wǎng)域,則該網(wǎng)絡(luò) intent 會解析為用戶的默認(rèn)瀏覽器應(yīng)用。

應(yīng)用可通過執(zhí)行以下某項操作來獲準(zhǔn)處理相應(yīng)的網(wǎng)域:

如果您的應(yīng)用調(diào)用網(wǎng)絡(luò) intent,不妨考慮添加一個提示或?qū)υ捒颍笥脩舸_認(rèn)操作。

Android 12 整合了現(xiàn)有行為,讓用戶可以 在沉浸模式下更輕松地執(zhí)行手勢導(dǎo)航命令 。此外,Android 12 還為 粘性沉浸模式提供了向后兼容性行為 。

Android 設(shè)備有許多不同的外形規(guī)格,如大屏設(shè)備、平板電腦和可折疊設(shè)備。為了針對每種設(shè)備適當(dāng)?shù)爻尸F(xiàn)內(nèi)容,您的應(yīng)用需要確定屏幕或顯示屏尺寸。隨著時間的推移,Android 提供了不同的 API 來檢索這些信息。在 Android 11 中,我們引入了 WindowMetrics API 并廢棄了以下方法:

在 Android 12 中,我們繼續(xù)建議使用 WindowMetrics ,并且正在逐步廢棄以下方法:

為了緩解應(yīng)用使用 Display API 檢索應(yīng)用邊界的行為,Android 12 限制了 API 為不完全可調(diào)整大小的應(yīng)用返回的值。這可能會對將此信息與 MediaProjection 一起使用的應(yīng)用產(chǎn)生影響。

應(yīng)用應(yīng)使用 WindowMetrics API 查詢其窗口的邊界,并使用 Configuration.densityDpi 查詢當(dāng)前的密度。

為了與較低的 Android 版本實現(xiàn)更廣泛的兼容性,您可以使用 Jetpack WindowManager 庫,它包含一個 WindowMetrics 類,該類支持 Android 4.0(API 級別 14)及更高版本。

首先,確保應(yīng)用的 activity 完全可調(diào)整大小 。

activity 應(yīng)依賴于來自 activity 上下文的 WindowMetrics 來執(zhí)行任何與界面相關(guān)的工作,尤其是 WindowManager.getCurrentWindowMetrics() 或 Jetpack 的 WindowMetricsCalculator.computeCurrentWindowMetrics() 。

如果您的應(yīng)用創(chuàng)建了 MediaProjection ,則必須正確地調(diào)整邊界的大小,因為投影會捕獲運行投影儀應(yīng)用的顯示分區(qū)。

如果應(yīng)用完全可調(diào)整大小,則 activity 上下文會返回正確的邊界,如下所示:

如果應(yīng)用并非完全可調(diào)整大小,則它必須從 WindowContext 實例進行查詢,并使用 WindowManager.getMaximumWindowMetrics() 或 Jetpack 方法 WindowMetricsCalculator.computeMaximumWindowMetrics() 檢索 activity 邊界的 WindowMetrics 。

注意 :任何使用 MediaProjection 的庫也應(yīng)遵循這些建議,并查詢相應(yīng)的 WindowMetrics 。

Android 12 將多窗口模式作為標(biāo)準(zhǔn)行為。

在大屏設(shè)備 (sw = 600dp) 中,所有應(yīng)用都將在多窗口模式下運行,無論應(yīng)用配置為何。如果 resizeableActivity="false" ,應(yīng)用會在必要時進入兼容模式,以適應(yīng)顯示屏尺寸。

在小屏設(shè)備 (sw 600dp) 中,系統(tǒng)會檢查 activity 的 minWidth 和 minHeight ,來確定 activity 能否在多窗口模式下運行。如果 resizeableActivity="false" ,則無論最小寬度和高度如何,應(yīng)用都無法在多窗口模式下運行。

如需了解詳情,請參閱 多窗口模式支持 。

相機應(yīng)用通常假定設(shè)備的屏幕方向和相機預(yù)覽的寬高比呈固定關(guān)系。但是,大屏設(shè)備類型(例如可折疊設(shè)備)和顯示模式(例如多窗口和多屏幕)挑戰(zhàn)著這一假設(shè)。

在 Android 12 上,請求特定屏幕方向且不可調(diào)整大小 ( resizeableActivity="false" ) 的相機應(yīng)用會自動進入邊襯區(qū)人像模式,從而確保相機預(yù)覽的屏幕方向和寬高比正確。在可折疊設(shè)備和其他具有相機硬件抽象層 ( HAL ) 的設(shè)備上,會對相機輸出應(yīng)用額外的旋轉(zhuǎn)以補償相機傳感器方向,并會剪裁相機輸出以匹配應(yīng)用相機預(yù)覽的寬高比。無論設(shè)備屏幕方向如何以及設(shè)備是處于折疊狀態(tài)還是展開狀態(tài),剪裁和額外的旋轉(zhuǎn)可確保應(yīng)用正確呈現(xiàn)相機預(yù)覽。

除了 一些例外情況 之外,為了為短時間運行的 前臺服務(wù) 提供流暢體驗,搭載 Android 12 或更高版本的設(shè)備可以將前臺服務(wù)通知的顯示延遲 10 秒。此更改使某些短期任務(wù)可在顯示通知之前完成。

Android 11(API 級別 30)引入了 受限存儲分區(qū) 作為應(yīng)用待機模式存儲分區(qū)。從 Android 12 開始,此存儲分區(qū)默認(rèn)處于活躍狀態(tài)。在所有存儲分區(qū)中,受限存儲分區(qū)的優(yōu)先級最低(限制最高)。存儲分區(qū)按優(yōu)先級從高到低的順序排列如下:

除了使用模式之外,系統(tǒng)還會考慮應(yīng)用的行為,以決定是否要將您的應(yīng)用放在受限存儲分區(qū)中。

如果您的應(yīng)用更負(fù)責(zé)地使用系統(tǒng)資源,就不太可能被放在受限存儲分區(qū)中。此外,如果用戶直接與您的應(yīng)用互動,系統(tǒng)會將其放在一個限制較少的存儲分區(qū)中。

如需檢查系統(tǒng)是否已將您的應(yīng)用放在受限存儲分區(qū)中,請調(diào)用 getAppStandbyBucket() 。如果此方法的返回值為 STANDBY_BUCKET_RESTRICTED ,則您的應(yīng)用在受限存儲分區(qū)中。

如需測試您的應(yīng)用在系統(tǒng)將其放在受限存儲分區(qū)中時的行為,您可以手動將您的應(yīng)用移至該存儲分區(qū)。為此,請在終端窗口中運行以下命令:

在搭載 Android 12 或更高版本的受支持設(shè)備上,用戶可以通過按一個切換開關(guān)選項,為設(shè)備上的所有應(yīng)用啟用和停用攝像頭和麥克風(fēng)使用權(quán)限。用戶可以從 快捷設(shè)置 訪問可切換的選項(如圖 1 所示),也可以從系統(tǒng)設(shè)置中的“隱私設(shè)置”屏幕訪問。

詳細(xì)了解這些 切換開關(guān) 以及如何檢查您的應(yīng)用是否遵循了關(guān)于 CAMERA 和 RECORD_AUDIO 權(quán)限的最佳實踐。

在搭載 Android 12 或更高版本的設(shè)備上,當(dāng)應(yīng)用使用麥克風(fēng)或相機時,圖標(biāo)會出現(xiàn)在狀態(tài)欄中。

詳細(xì)了解這些 指標(biāo) 以及如何檢查您的應(yīng)用是否遵循了關(guān)于 CAMERA 和 RECORD_AUDIO 權(quán)限的最佳實踐。

[圖片上傳中...(image-bd519-1643780883994-1)]

figcaption style="box-sizing: inherit; font-size: 14px; margin-top: -4px;" 圖 1. “快捷設(shè)置”中的麥克風(fēng)和攝像頭切換開關(guān)。/figcaption

[圖片上傳中...(image-f49bfd-1643780883994-0)]

figcaption style="box-sizing: inherit; font-size: 14px; margin-top: -4px;" 圖 2. 麥克風(fēng)和攝像頭指示標(biāo)志,顯示了最近的數(shù)據(jù)訪問。/figcaption

在搭載 Android 12 或更高版本的設(shè)備上,根據(jù)應(yīng)用對其他應(yīng)用的 軟件包可見性 ,以 Android 11(API 級別 30)或更高版本為目標(biāo)平臺且調(diào)用以下某種方法的應(yīng)用會收到一組過濾后的結(jié)果:

Android 12 移除了之前棄用的加密算法的許多 BouncyCastle 實現(xiàn),包括所有 AES 算法。系統(tǒng)改用這些算法的 Conscrypt 實現(xiàn)。

如果符合以下任何條件,則此變更會影響您的應(yīng)用:

在 Android 12 及更高版本中,當(dāng)某個應(yīng)用首次調(diào)用 getPrimaryClip() 以 從另一個應(yīng)用訪問剪輯數(shù)據(jù) 時,會彈出一個消息框消息,通知用戶對剪貼板的訪問。

消息框消息內(nèi)的文本包含以下格式: var translate="no" style="box-sizing: inherit; color: var(--devsite-var-color); -webkit-font-smoothing: auto; font-weight: 500;"APP/var pasted from your clipboard.

注意 :您的應(yīng)用可能會調(diào)用 getPrimaryClipDescription() 以接收有關(guān) 剪貼板上當(dāng)前數(shù)據(jù)的信息 。當(dāng)您的應(yīng)用調(diào)用此方法時,系統(tǒng)不會顯示消息框消息。

在 Android 12 及更高版本中, getPrimaryClipDescription() 可以檢測到以下詳細(xì)信息:

為了加強用戶與應(yīng)用和系統(tǒng)互動時的控制,從 Android 12 開始,棄用了 ACTION_CLOSE_SYSTEM_DIALOGS intent 操作。除了 一些特殊情況 之外,當(dāng)應(yīng)用嘗試 調(diào)用包含此操作的 intent 時,系統(tǒng)會基于應(yīng)用的目標(biāo) SDK 版本執(zhí)行以下操作之一:

在以下情況下,應(yīng)用仍然可以在 Android 12 或更高版本上關(guān)閉系統(tǒng)對話框:

為了維持系統(tǒng)安全并保持良好的用戶體驗,Android 12 會阻止應(yīng)用使用 觸摸事件 ,使用觸摸事件時疊加層會以不安全的方式遮掩應(yīng)用。 換言之,系統(tǒng)會屏蔽穿透某些窗口的觸摸操作,但 有一些例外情況 。

此變更會影響選擇讓觸摸操作穿透其窗口的應(yīng)用,例如使用 FLAG_NOT_TOUCHABLE 標(biāo)志。包括但不限于以下示例:

在以下情況下,允許執(zhí)行“穿透”觸摸操作:

如果系統(tǒng)屏蔽觸摸操作, Logcat 會記錄以下消息:

在搭載 Android 12 或更高版本的設(shè)備上,不受信任的觸摸功能默認(rèn)被屏蔽。如需允許不受信任的觸摸操作,請在終端窗口中運行以下 ADB 命令 :

如需將行為還原為默認(rèn)設(shè)置(不受信任的觸摸操作被屏蔽),請運行以下命令:

Android 12 更改了在按下“返回”按鈕時系統(tǒng)對為其任務(wù)根的啟動器 activity 的默認(rèn)處理方式。在以前的版本中,系統(tǒng)會在按下“返回”按鈕時完成這些 activity。在 Android 12 中,現(xiàn)在系統(tǒng)會將 activity 及其任務(wù)移到后臺,而不是完成 activity。當(dāng)使用主屏幕按鈕或手勢從應(yīng)用中導(dǎo)航出應(yīng)用時,新行為與當(dāng)前行為一致。

注意 :系統(tǒng)僅會將新行為應(yīng)用于為其任務(wù)根的啟動器 activity,即使用 ACTION_MAIN 和 CATEGORY_LAUNCHER 聲明 intent 過濾器 的 activity。對于其他 activity,在按下“返回”按鈕時,系統(tǒng)會像以前一樣完成 activity。

對于大多數(shù)應(yīng)用而言,此變更意味著使用“返回”按鈕退出應(yīng)用的用戶可以更快地從 溫狀態(tài) 恢復(fù)應(yīng)用,而不必從 冷狀態(tài) 完全重啟應(yīng)用。

建議您針對此變更測試您的應(yīng)用。如果您的應(yīng)用目前替換 onBackPressed() 來處理返回導(dǎo)航并完成 Activity ,請更新您的實現(xiàn)來調(diào)用 super.onBackPressed() 而不是完成 Activity。調(diào)用 super.onBackPressed() 可在適當(dāng)時將 activity 及其任務(wù)移至后臺,并可為不同應(yīng)用中的用戶提供更一致的導(dǎo)航體驗。

另請注意,通常,我們建議您使用 AndroidX Activity API 提供自定義返回導(dǎo)航 ,而不是替換 onBackPressed() 。如果沒有組件攔截系統(tǒng)按下“返回”按鈕,AndroidX Activity API 會自動遵循適當(dāng)?shù)南到y(tǒng)行為。

在 Android 12 中,無論顯示屏是否支持無縫過渡到新的刷新率,都會發(fā)生使用 setFrameRate() 實現(xiàn)的刷新率變化;無縫過渡是指沒有任何視覺中斷,比如一兩秒鐘的黑屏。以前,如果顯示屏不支持無縫過渡,它在調(diào)用 setFrameRate() 后通常會繼續(xù)使用同一刷新率。您可以調(diào)用 getAlternativeRefreshRates() 來提前確定向新刷新率的過渡是否有可能是無縫過渡。通常,會在刷新率切換完成后調(diào)用回調(diào) onDisplayChanged() ,但對于某些外接顯示屏,會在非無縫過渡期間調(diào)用該回調(diào)。

以下示例說明了您可以如何實現(xiàn)此行為:

Android 12 中添加了以下 API:

如需創(chuàng)建 Passpoint 建議,應(yīng)用必須使用 PasspointConfiguration 、 Credential 和 HomeSp 類。這些類描述了 Wi-Fi Alliance Passpoint 規(guī)范 中定義的 Passpoint 配置文件。

如需了解詳情,請參閱 適用于互聯(lián)網(wǎng)連接的 Wi-Fi 建議 API 。

Android 12 包含更新后的受限制非 SDK 接口列表(基于與 Android 開發(fā)者之間的協(xié)作以及最新的內(nèi)部測試)。在限制使用非 SDK 接口之前,我們會盡可能確保有可用的公開替代方案。

如果您的應(yīng)用并非以 Android 12 為目標(biāo)平臺,其中一些變更可能不會立即對您產(chǎn)生影響。然而,雖然您目前仍可以使用一些非 SDK 接口( 具體取決于應(yīng)用的目標(biāo) API 級別 ),但只要您使用任何非 SDK 方法或字段,終歸存在導(dǎo)致應(yīng)用出問題的顯著風(fēng)險。

如果您不確定自己的應(yīng)用是否使用了非 SDK 接口,則可以 測試您的應(yīng)用 來進行確認(rèn)。如果您的應(yīng)用依賴于非 SDK 接口,您應(yīng)該開始計劃遷移到 SDK 替代方案。然而,我們知道某些應(yīng)用具有使用非 SDK 接口的有效用例。如果您無法為應(yīng)用中的某項功能找到使用非 SDK 接口的替代方案,應(yīng) 請求新的公共 API 。

如需詳細(xì)了解此 Android 版本中的變更,請參閱 Android 12 中有關(guān)限制非 SDK 接口的更新 。如需全面了解有關(guān)非 SDK 接口的詳細(xì)信息,請參閱 對非 SDK 接口的限制 。

分享題目:android兼容,Android兼容性
鏈接URL:http://chinadenli.net/article47/dsiceej.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化云服務(wù)器全網(wǎng)營銷推廣關(guān)鍵詞優(yōu)化營銷型網(wǎng)站建設(shè)建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)