为什么 `getPackagesHoldingPermissions` 仅返回系统包?

问题描述 投票:0回答:1

我想列出所有使用互联网的应用程序,我从应用程序WireGuard中看到此功能,这就是它的作用(链接到代码):

    val packageInfos = getPackagesHoldingPermissions(pm, arrayOf(Manifest.permission.INTERNET))

    private fun getPackagesHoldingPermissions(pm: PackageManager, permissions: Array<String>): List<PackageInfo> {
        return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            pm.getPackagesHoldingPermissions(permissions, PackageInfoFlags.of(0L))
        } else {
            @Suppress("DEPRECATION")
            pm.getPackagesHoldingPermissions(permissions, 0)
        }
    }

它显示所有应用程序,包括非系统应用程序,例如whatsapp或任何第三方应用程序。

然后我在我的应用程序中尝试了这段代码,但它只显示“com.android.x”和“com.google.x”等应用程序,根本没有非系统应用程序。我以为可能是权限造成的,我把WireGuard的Manifest.xml里的所有权限都删掉了,依然有效,所以我觉得不是权限造成的,但是这是为什么呢?

android android-package-managers
1个回答
0
投票

WireGuard 具有:

    <queries>
        <intent>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent>
    </queries>

在其清单中,解决包可见性。我猜你不会。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.