请求PACKAGE_USAGE_STATS权限

7

我想检查用户是否已授权我的应用程序使用PACKAGE_USAGE_STATS。 我目前正在执行以下操作:

// Control that the required permissions is instantiated!
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, Manifest.permission.PACKAGE_USAGE_STATS) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.PACKAGE_USAGE_STATS}, MULTIPLE_PERMISSION_GRANTED);
}

我已按照Android开发者文档中所述实现了requestPermissions,并且ACCESS_FINE_LOCATION权限可以正常使用。但是,当我的应用程序请求权限时,它只会显示ACCESS_FINE_LOCATION权限,而不是PACKAGE_USAGE_STATS。是否有人能解释一下原因?如果可以的话,请提供解决方案。
我希望两个权限都能在对话框中显示,如下所示:enter image description here
1个回答

15

很遗憾,无法像处理危险权限那样在运行时请求PACKAGE_USAGE_STATS. 用户需要通过“设置”应用程序手动授予权限,如UsageStatsManager文档中所述:

此API需要权限android.permission.PACKAGE_USAGE_STATS,这是一个系统级权限,将不授予第三方应用。但是,申明该权限意味着使用API的意图,设备用户可以通过“设置”应用程序授予权限。

您可以使用以下代码直接打开具有使用访问权限的应用程序:

startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS));

这里提供了一个基本应用程序示例,演示如何使用应用程序使用统计API。


是的,我已经在做了。我只是很烦我的用户必须打开设置应用程序。但是感谢您澄清这一点。 - Anonymous

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接