亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android 11中的軟件包可見性是什么

發布時間:2021-10-28 17:34:41 來源:億速云 閱讀:139 作者:iii 欄目:移動開發

這篇文章主要講解了“Android 11中的軟件包可見性是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Android 11中的軟件包可見性是什么”吧!

為了更好地 "問責" 訪問已安裝應用的行為,默認情況下,以 Android 11 為目標平臺 (目標 API level 為 30)  的應用默認將只能檢測到部分過濾后的已安裝應用。如果想獲取更多別的已安裝應用列表信息,則需要在應用內的 Android manifest 中添加  元素,從而拓寬訪問范圍。

在大部分常見場景下,包括任何以 startActivity() 啟動的  intents,您不需要做任何改動。而其他場景,比如從您應用的界面中直接打開某個特定的第三方應用,則需要開發者們顯式地聲明應用的包名或者 intent  filter 簽名,如下所示:

  • ...

  • 大部分常見場景

  • https://developer.android.google.cn/preview/privacy/package-visibility#use-cases-not-affected

  • 其他場景

  • https://developer.android.google.cn/preview/privacy/package-visibility-use-cases

  • intent filter 簽名

  • https://developer.android.google.cn/preview/privacy/package-visibility#intent-signature

如果您使用 Custom Tab 來打開 URL 鏈接,您也許會調用 resolveActivity() 和  queryIntentActivities() 來啟動一個非瀏覽器應用 (前提是您安裝了處理該 URL 的應用)。在 Android 11  中,則有更好的辦法來對此進行處理: 使用 intent 的 FLAG_ACTIVITY_REQUIRE_NON_BROWSER  標記,而不是去查詢其他的應用。如果在您使用此標記調用 startActivity() 時啟動了瀏覽器,則會拋出一個  ActivityNotFoundException 異常,此時您的應用可以對此異常進行處理,轉而使用 Custom Tab 來打開 URL 鏈接。

try {   val intent = Intent(ACTION_VIEW, Uri.parse(url)).apply {     // 非瀏覽器應用會直接處理該 URL(默認情況下)     // 用戶也可以在消除歧義對話框中選擇非瀏覽器應用      addCategory(CATEGORY_BROWSABLE)     flags = FLAG_ACTIVITY_NEW_TASK or FLAG_ACTIVITY_REQUIRE_NON_BROWSER   }    startActivity(intent) } catch (e: ActivityNotFoundException) {  // 只能使用瀏覽器應用,或者默認使用瀏覽器處理該 intent。 }
  • Custom Tab

  • https://developers.google.cn/web/android/custom-tabs

  • 更好的辦法

  • https://developer.android.google.cn/preview/privacy/package-visibility-use-cases#avoid-a-disambiguation-dialog

  • FLAG_ACTIVITY_REQUIRE_NON_BROWSER

  • https://developer.android.google.cn/preview/privacy/package-visibility#web-intent-non-browser-app

在極少數情況下,您的應用可能需要查詢設備上所有已安裝的應用或與之進行交互,不管這些應用包含哪些組件。為了允許您的應用看到其他所有已安裝應用,Android  11 引入了 QUERY_ALL_PACKAGES 權限。在即將發布的政策更新中,Google Play 會為需要 QUERY_ALL_PACKAGES  權限的應用提供相關指南。 您可以將 API Level 設為 30,并使用 Android Studio 3.2 以上和最新發布的相應 Android  Gradle 插件,即可在應用中添加 元素。您可以在開發者文檔 — Android 11  中的軟件包可見性中找到更多有關軟件包可用性的使用信息和用例。

  • QUERY_ALL_PACKAGEShttps://developer.android.google.cn/preview/privacy/package-visibility#all-apps

  • 開發者文檔 — Android 11  中的軟件包可見性https://developer.android.google.cn/preview/privacy/package-visibility

Android Studio 和 Gradle 對該功能的支持

如果您使用的 Android Gradle 插件版本是 4.1 和以上版本的話,就可以正常使用新的 元素,因為舊版本的 Gradle  插件并不兼容此元素。如果您使用了 ,或者是依賴了支持 Android 11 的庫或 SDK,則可能會引起 manifest 沖突從而出現合并  manifest 的錯誤。例如,在構建應用時,在 Build Output Window 中可能會看到以下錯誤:

Android resource linking failed  /Users/sample/AndroidStudioProjects/MyApp/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml:18: error: unexpected element <queries> found in <manifest>

在 Build Output Window 中可能還會出現這樣一條錯誤信息,引導您去查看 Manifest 合并日志 (Manifest merger  logs):

Manifest merger failed with multiple errors, see logs

展開 Merged Manifest 視圖后,會出現一條附加的報錯信息:

Error: Missing 'package' key attribute on element package

Merged Manifest 視圖

  • https://developer.android.google.cn/studio/build/manifest-merge#inspect_the_merged_manifest_and_find_conflicts

修復 Android Gradle 插件的問題

解決以上錯誤的最好辦法就是將 Android Gradle 插件升級到 4.1 Beta 版本。  但是,并不是所有開發者都能夠使用最新的版本,一些項目中可能會依賴老版本的 Gradle 或者代碼庫,而它們與 4.1 版本的 Android Gradle  插件有兼容性問題。 因此,近期我們為 Android Gradle 插件發布了一個小版本 (dot releases) 的升級,以便兼容<queries> 元素:

  • Android Gradle 插件升級到 4.1 Beta  版本https://developer.android.google.cn/studio/releases/gradle-plugin#updating-plugin

  • 小版本 (dot releases)  的升級https://developer.android.google.cn/studio/releases/gradle-plugin#4-0-0

Android 11中的軟件包可見性是什么

舉個例子,如果您正在使用 4.0.0 版本的 Android Gradle 插件,就可以在項目級別的 build.gradle  文件中將相關依賴升級到上圖中對應的版本。

buildscript {      repositories {         google()         jcenter()     }      dependencies {         // classpath 'com.android.tools.build:gradle:4.0.0'         classpath 'com.android.tools.build:gradle:4.0.1'     } }

感謝各位的閱讀,以上就是“Android 11中的軟件包可見性是什么”的內容了,經過本文的學習后,相信大家對Android 11中的軟件包可見性是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石林| 黔江区| 阜宁县| 稻城县| 兴国县| 赤水市| 张家川| 神池县| 夏邑县| 泉州市| 金湖县| 九江市| 合肥市| 铜陵市| 和政县| 米易县| 高州市| 晋城| 米脂县| 金溪县| 德令哈市| 新安县| 扎兰屯市| 辽宁省| 西乌珠穆沁旗| 西林县| 临泉县| 凯里市| 禄丰县| 武定县| 黄龙县| 吴堡县| 太谷县| 阿克苏市| 镶黄旗| 康平县| 临西县| 县级市| 开化县| 桐柏县| 云和县|