遵循迁移说明并将以下行添加到清单中:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
我无法弄清楚为什么我得到一个失败的测试用例,其中没有授予android.permission.FOREGROUND_SERVICE
权限(至少在运行时检查它时)。
基于docs,其中指出android.permission.FOREGROUND_SERVICE
sh将由系统自动授予。
想要使用前台服务的应用程序现在必须首先请求FOREGROUND_SERVICE权限。这是正常权限,因此系统会自动将其授予请求的应用程序。
有人可以解释为什么测试用例(使用以下代码的变体)失败了吗?
assert (ActivityCompat.checkSelfPermission(activity, "android.permission.FOREGROUND_SERVICE") == PackageManager.PERMISSION_GRANTED)
然而!我没有扔任何SecurityException
。这使我怀疑我应该在运行时检查权限的方式。
我错过了什么?
这是失败的,因为您可能在API <28的设备上运行它。此方法字段仅适用于API 28及更高版本。如果你写Manifest.permission.FOREGROUND_SERVICE
而不是普通字符串,Android Studio会警告你。
FOREGROUND_SERVICE
不是dangerous
的许可。因此,它与运行时权限系统和checkSelfPermission()
等方法无关。