gpt4 book ai didi

android - PackageManager.getInstalledPackages() 的 ActivityInfo[] 为空

转载 作者:行者123 更新时间:2023-11-29 19:24:04 28 4
gpt4 key购买 nike

尝试检索每个包的所有 Activity 会导致所有 Activity 的 ActivityInfo 数组为空:

List<PackageInfo> packageInfos = mPackageManager.getInstalledPackages(
PackageManager.GET_ACTIVITIES &
PackageManager.GET_SERVICES &
PackageManager.GET_RECEIVERS &
PackageManager.GET_PROVIDERS &
PackageManager.GET_PERMISSIONS);

for (PackageInfo p : packageInfos)
Log.wtf(TAG, p.packageName + ": " + (p.activities == null ? "null" :"not null"));
所有包的

p.activities 为空。根据https://developer.android.com/reference/android/content/pm/PackageInfo.html#activities它不应该为空,因为已设置 GET_ACTIVITIES 标志。

那么问题出在哪里呢?

最佳答案

糟糕的是,我弄乱了按位运算符。必须使用 OR 运算符 (|) 而不是 AND 运算符 (&),如下所示:

List<PackageInfo> packageInfos = mPackageManager.getInstalledPackages(
PackageManager.GET_ACTIVITIES |
PackageManager.GET_SERVICES |
PackageManager.GET_RECEIVERS |
PackageManager.GET_PROVIDERS |
PackageManager.GET_PERMISSIONS);

但是,此调用会导致 TransactionTooLargeException,因为 Android 中不同进程之间的数据大小限制发生了变化,因此大多数可能返回的 packageInfos 列表将为 null 或空

关于android - PackageManager.getInstalledPackages() 的 ActivityInfo[] 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41762958/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com