出现这个异常是因为在Android 8.0及以上版本中,启动前台服务需要调用startForeground()方法,而如果应用未在前台运行且未受到用户明确请求,则会抛出该异常。
解决这个问题的方法如下: 首先,要在AndroidManifest.xml中声明当前应用需要后台运行的权限:
然后,在启动前台服务时需要满足以下条件:
参考代码如下:
// 首先检查是否有获取运行时权限 if (ContextCompat.checkSelfPermission(this, Manifest.permission.FOREGROUND_SERVICE) == PackageManager.PERMISSION_GRANTED) {
// 创建 Notification 对象
Notification notification = new Notification.Builder(this)
// 自定义 Notification 样式
.setContentTitle("My Foreground Service")
.setContentText("Foreground Service Example in Android")
.setSmallIcon(R.drawable.icon_foreground_service)
.setContentIntent(pendingIntent).build();
// 启动服务
startForeground(YOUR_NOTIFICATION_ID, notification);
} else { // 没有获取到权限,请求用户授权 // 使用此方法之前,请确保已注册并设置了 Intent 权限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.FOREGROUND_SERVICE}, YOUR_PERMISSION_CODE); } 致此,该
上一篇:android.app.ForegroundServiceDidNotStartInTimeException改为前台服务未能及时启动异常
下一篇:android.app.ReceiverRestrictedContext 无法转换为 android.app.Activity。