android 使用JobIntentService的enqueueWork方法报错Neither user 10058 nor current process has android.permission.WAKE_LOCK.
这个错误提示是因为你的应用没有获取到android.permission.WAKE_LOCK权限,而JobIntentService需要获取该权限才能正常使用。
你可以在AndroidManifest.xml文件中添加以下权限声明:
<uses-permission android:name="android.permission.WAKE_LOCK" />
如果还是出现该错误提示,可以尝试在代码中动态获取该权限,如下所示:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WAKE_LOCK)
!= PackageManager.PERMISSION_GRANTED) {
// Permission is not granted, request it
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WAKE_LOCK},
MY_PERMISSIONS_REQUEST_WAKE_LOCK);
} else {
// Permission has already been granted
// TODO: start JobIntentService
}
另外,如果你的应用运行在Android 6.0及以上版本,还需要在代码中动态请求该权限,否则会出现java.lang.SecurityException异常。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.System.canWrite(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, MY_PERMISSIONS_REQUEST_WRITE_SETTINGS);
} else {
// Permission has already been granted
// TODO: start JobIntentService
}
}
希望以上解决方案能够帮助你解决问题。
原文地址: https://www.cveoy.top/t/topic/tdA 著作权归作者所有。请勿转载和采集!