检查是否总是授予 FOREGROUND_SERVICE 权限 returns false

checking if FOREGROUND_SERVICE permission is granted allways returns false

遵循迁移说明并将以下行添加到清单中:

<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

我无法弄清楚为什么我得到一个失败的测试用例,其中未授予 android.permission.FOREGROUND_SERVICE 权限(至少在 运行 时间检查它时)。

基于 docs,其中规定 android.permission.FOREGROUND_SERVICE 应由系统自动授予。

apps wanting to use foreground services must now request the FOREGROUND_SERVICE permission first. This is a normal permission, so the system automatically grants it to the requesting app.

有人可以解释为什么我的测试用例(使用以下代码的变体)失败了吗?

assertEquals(ActivityCompat.checkSelfPermission(activity, "android.permission.FOREGROUND_SERVICE"), PackageManager.PERMISSION_GRANTED);

还没有! 我没有任何 SecurityException 抛出。我错过了什么?

FOREGROUND_SERVICE 不是 dangerous 权限。因此,它与 checkSelfPermission().

等运行时权限系统和方法无关

这是失败的,因为您可能 运行 在 API < 28 的设备上使用它。此方法字段仅适用于 API 28 及更高版本。如果您按照应有的方式编写 Manifest.permission.FOREGROUND_SERVICE 而不是纯字符串,Android Studio 会警告您。