android queries属性
從Android 11 開始 系統(tǒng)對app的可見性進(jìn)行了保護(hù),只有部分應(yīng)用可見所有app
自動可見的應(yīng)用類型
即使您的應(yīng)用以 Android 11(API 級別 30)或更高版本為目標(biāo)平臺,以下類型的應(yīng)用也始終對您的應(yīng)用可見:
- 您自己的應(yīng)用。
- 實(shí)現(xiàn) Android 核心功能的某些系統(tǒng)軟件包,例如媒體提供程序。
- 安裝了您應(yīng)用的應(yīng)用。
- 使用?startActivityForResult()?方法在您的應(yīng)用中啟動 activity 的任何應(yīng)用,正如如何獲取 activity 的結(jié)果這一指南中所述。
- 啟動或綁定到您應(yīng)用中的某項(xiàng)服務(wù)的任何應(yīng)用。
- 訪問您應(yīng)用中的?Content Provider?的任何應(yīng)用。
- 具有 Content Provider 的任何應(yīng)用,其中您的應(yīng)用已被授予 URI 權(quán)限來訪問該 Content Provider。
- 接收您應(yīng)用的輸入的任何應(yīng)用。這種情況僅適用于您的應(yīng)用作為輸入法應(yīng)用提供輸入。
此外,您可以使用隱式或顯式?intent 來啟動另一應(yīng)用的 activity,無論這個應(yīng)用是否對您的應(yīng)用可見。
通過命令??adb shell dumpsys package queries 可以查看系統(tǒng)的具體可見性
forceQueryable:標(biāo)簽下的apk 表示 可見所有已安裝的apk
queries via package name: 標(biāo)簽表示只有配置了包名 才對該app可見
queries via intent:?標(biāo)簽表示只有配置了intent? 才對該app可見
queryable via uses-library:
queryable via interaction:
配置queries標(biāo)簽 主要在 AndroidManifest.xml 中進(jìn)行配置?
<queries><intent><action android:name="com.ota.update.LocalUpdate" /></intent><package></package><provider></provider></queries>只有配置了對應(yīng)的標(biāo)簽 ,才能獲取到對應(yīng)的app信息
如果 沒有配置標(biāo)簽 還想可見所有app,需配置權(quán)限
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
QUERY_ALL_PACKAGES 權(quán)限定義在:frameworks\base\core\res\AndroidManifest.xml 中
<!-- Allows query of any normal app on the device, regardless of manifest declarations.<p>Protection level: normal --><permission android:name="android.permission.QUERY_ALL_PACKAGES"android:label="@string/permlab_queryAllPackages"android:description="@string/permdesc_queryAllPackages"android:protectionLevel="normal" /><uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>總結(jié)
以上是生活随笔為你收集整理的android queries属性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TechParty Mini+4 log
- 下一篇: 【负载均衡server】F5与nginx