真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android11中的軟件包可見性是什么

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

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),江都企業(yè)網(wǎng)站建設(shè),江都品牌網(wǎng)站建設(shè),網(wǎng)站定制,江都網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,江都網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

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

在大部分常見場景下,包括任何以 startActivity() 啟動(dòng)的  intents,您不需要做任何改動(dòng)。而其他場景,比如從您應(yīng)用的界面中直接打開某個(gè)特定的第三方應(yīng)用,則需要開發(fā)者們顯式地聲明應(yīng)用的包名或者 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 鏈接,您也許會(huì)調(diào)用 resolveActivity() 和  queryIntentActivities() 來啟動(dòng)一個(gè)非瀏覽器應(yīng)用 (前提是您安裝了處理該 URL 的應(yīng)用)。在 Android 11  中,則有更好的辦法來對此進(jìn)行處理: 使用 intent 的 FLAG_ACTIVITY_REQUIRE_NON_BROWSER  標(biāo)記,而不是去查詢其他的應(yīng)用。如果在您使用此標(biāo)記調(diào)用 startActivity() 時(shí)啟動(dòng)了瀏覽器,則會(huì)拋出一個(gè)  ActivityNotFoundException 異常,此時(shí)您的應(yīng)用可以對此異常進(jìn)行處理,轉(zhuǎn)而使用 Custom Tab 來打開 URL 鏈接。

try {   val intent = Intent(ACTION_VIEW, Uri.parse(url)).apply {     // 非瀏覽器應(yīng)用會(huì)直接處理該 URL(默認(rèn)情況下)     // 用戶也可以在消除歧義對話框中選擇非瀏覽器應(yīng)用      addCategory(CATEGORY_BROWSABLE)     flags = FLAG_ACTIVITY_NEW_TASK or FLAG_ACTIVITY_REQUIRE_NON_BROWSER   }    startActivity(intent) } catch (e: ActivityNotFoundException) {  // 只能使用瀏覽器應(yīng)用,或者默認(rèn)使用瀏覽器處理該 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

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

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

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

Android Studio 和 Gradle 對該功能的支持

如果您使用的 Android Gradle 插件版本是 4.1 和以上版本的話,就可以正常使用新的 元素,因?yàn)榕f版本的 Gradle  插件并不兼容此元素。如果您使用了 ,或者是依賴了支持 Android 11 的庫或 SDK,則可能會(huì)引起 manifest 沖突從而出現(xiàn)合并  manifest 的錯(cuò)誤。例如,在構(gòu)建應(yīng)用時(shí),在 Build Output Window 中可能會(huì)看到以下錯(cuò)誤:

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

在 Build Output Window 中可能還會(huì)出現(xiàn)這樣一條錯(cuò)誤信息,引導(dǎo)您去查看 Manifest 合并日志 (Manifest merger  logs):

Manifest merger failed with multiple errors, see logs

展開 Merged Manifest 視圖后,會(huì)出現(xiàn)一條附加的報(bào)錯(cuò)信息:

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

修復(fù) Android Gradle 插件的問題

解決以上錯(cuò)誤的最好辦法就是將 Android Gradle 插件升級到 4.1 Beta 版本。  但是,并不是所有開發(fā)者都能夠使用最新的版本,一些項(xiàng)目中可能會(huì)依賴?yán)习姹镜?Gradle 或者代碼庫,而它們與 4.1 版本的 Android Gradle  插件有兼容性問題。 因此,近期我們?yōu)?Android Gradle 插件發(fā)布了一個(gè)小版本 (dot releases) 的升級,以便兼容 元素:

  • 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中的軟件包可見性是什么

舉個(gè)例子,如果您正在使用 4.0.0 版本的 Android Gradle 插件,就可以在項(xiàng)目級別的 build.gradle  文件中將相關(guān)依賴升級到上圖中對應(yīng)的版本。

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中的軟件包可見性是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Android 11中的軟件包可見性是什么這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


本文標(biāo)題:Android11中的軟件包可見性是什么
文章起源:http://weahome.cn/article/pcjdhh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部