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

时间:2019-04-29 11:10:21

标签: android android-permissions foreground-service

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

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

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

基于docs,该状态指出android.permission.FOREGROUND_SERVICE应该由系统自动授予。

  想要使用前台服务的

应用现在必须请求   首先是FOREGROUND_SERVICE权限。这是正常权限,所以   系统会自动将其授予请求的应用程序。

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

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

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

我想念什么?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

$('input[name="datefilter"]').daterangepicker({ autoUpdateInput: false, format: "yyyy-mm-dd", locale: { "format" : 'YYYY/MM/DD', "separator": " - ", "applyLabel": "Apply", "cancelLabel": "Cancel", "fromLabel": "From", "customRangeLabel": "Custom", "daysOfWeek": ["SUN","MON","TUE","WED","THE","FRI","SAT"] } }); 不是FOREGROUND_SERVICE权限。因此,它与运行时权限系统和类似dangerous之类的方法无关。