android - QUERY_ALL_PACKAGES 是如何执行的?

标签 android android-permissions android-11

Android 11(目标 30)引入 Package visibility restrictions .
他们添加了允许绕过这些限制的 QUERY_ALL_PACKAGES,并且只允许特定的应用程序使用它。
此权限的保护级别是 NORMAL,所以我想知道如何限制此权限。
在文档中,他们说:

In an upcoming policy update, look for Google Play to provide guidelines for apps that need the QUERY_ALL_PACKAGES permission.


有谁知道在哪里可以找到此政策更新?

最佳答案

QUERY_ALL_PACKAGES 权限具有正常的保护级别,因此添加时不会引发异常。
我强制执行此权限的方式是调用 queryUsageStatsUsageStatsManager实例。如果它返回一个空列表,我会通知用户在手机设置中打开使用数据访问。

private fun requestPackagePermission() {
        val stats: List<UsageStats> = usageStatsManager
            .queryUsageStats(
                UsageStatsManager.INTERVAL_BEST,
                0,
                System.currentTimeMillis()
            )
        val isEmpty = stats.isEmpty()
        if (isEmpty) {
            // notify user before opening app settings
            startActivity(Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS))
        } else {
            // carry out your work
        }
    }
我在 onResume() 中调用此方法我的 Activity 或 fragment ,以便在打开使用数据访问并且用户导航回应用程序时,再次调用该方法以确认更改。

关于android - QUERY_ALL_PACKAGES 是如何执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63813187/

相关文章:

java - 构建gradle失败。 Facebook取消后在 list 中失败

java - 如何在 android fragment 中处理位置权限

android - 自定义android应用权限描述内容

android - 如何在 Android 11(Android R 或 Android API 级别 30)中使用 windowinsetanimation

android - targetSdkVersion 低于 22 的下载管理器的安全异常

JAVA:没有得到我想要的小数位数

android - GoogleMaps setMyLocationEnabled(true) 不更新 (Genymotion)

android - 使用 ionic 和 cordova 生成面向 API 级别 30 (Android 11) 的 Android bundle

android - 在子目录 DocumentFile 对象的 Uri 上调用 DocumentFile.fromTreeUri() 时的意外行为

android - 在表布局中克隆行