Android PackageManager只能检测物理设备上的系统应用



当我在某些物理设备上运行我的应用程序时,Android PackageManager似乎只检测系统应用程序。例如,我安装了Facebook应用程序,但在com.facebook.katana上调用PackageManager.getPackageInfo会导致NameNotFoundExceptiongetInstalledPackages(PackageManager.GET_META_DATA)返回一个似乎只是系统应用程序的列表(即包名以com.android,com.samsung等开头)。同样,这似乎只发生在我测试过的物理设备上。在我的模拟器上,一切都按预期工作(即所有应用程序都被检测到)。

知道为什么会这样吗?

由于新的包可见性策略,这可能发生在Android 11设备上https://developer.android.com/about/versions/11/privacy/package-visibility

你应该在你的应用程序清单

中声明要在执行时搜索的包名
<manifest>
...
<queries>
<package android:name="package.name.to.search"/>
</queries>
</manifest>

最新更新