检查是否授予FOREGROUND_SERVICE权限始终返回false

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

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

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

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

基于docs,其中指出android.permission.FOREGROUND_SERVICEsh将由系统自动授予。

想要使用前台服务的应用程序现在必须首先请求FOREGROUND_SERVICE权限。这是正常权限,因此系统会自动将其授予请求的应用程序。

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

assert (ActivityCompat.checkSelfPermission(activity, "android.permission.FOREGROUND_SERVICE") == PackageManager.PERMISSION_GRANTED)

然而!我没有扔任何SecurityException。这使我怀疑我应该在运行时检查权限的方式。

我错过了什么?

android android-permissions foreground-service
2个回答
1
投票

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


0
投票

FOREGROUND_SERVICE不是dangerous的许可。因此,它与运行时权限系统和checkSelfPermission()等方法无关。

© www.soinside.com 2019 - 2024. All rights reserved.