提问人:iammrmehul 提问时间:11/15/2023 最后编辑:iammrmehul 更新时间:11/15/2023 访问量:35
Android 11:android.app.RemoteServiceException:startForeground 的错误通知
Android 11: android.app.RemoteServiceException: Bad notification for startForeground
问:
尝试按照代码启动前台服务:
final Notification.Builder notificationBuilder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
final NotificationChannel channel = new NotificationChannel(CHANNEL_ID,
getApplicationContext().getPackageName(), NotificationManager.IMPORTANCE_HIGH);
mNotificationManager.createNotificationChannel(channel);
notificationBuilder = new Notification.Builder(mAppContext, CHANNEL_ID);
} else {
notificationBuilder = new Notification.Builder(mAppContext);
}
final Notification notification = notificationBuilder
.setContentTitle(mAppContext.getResources()
.getString(R.string.initiate_partner_apps))
.setSmallIcon(R.drawable.ic_launcher)
.build();
startForeground(NOTIFICATION_ID, notification);
但是我面临以下错误:
D AndroidRuntime: Shutting down VM
E AndroidRuntime: FATAL EXCEPTION: main
E AndroidRuntime: Process: com.my.package, PID: 8320
E AndroidRuntime: android.app.RemoteServiceException: Bad notification for startForeground
E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2020)
E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
E AndroidRuntime: at android.os.Looper.loop(Looper.java:223)
E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7719)
E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
上面的代码在 Android 8.1 中没有引起任何问题,但仅在 Android 11 中才开始看到这个问题。
到目前为止,无论我在网上看到什么,错误消息还列出了指出无效频道 ID 的原因。就我而言,不仅没有列出原因,而且我一直在使用相同的常量,所以我知道我没有犯那个错误。CHANNEL_ID
我无法理解此错误的可能原因是什么
答:
1赞
Cloverleaf
11/15/2023
#1
你真的想开始什么?前台服务或通知(或两者兼而有之)? 如果是前台服务,则可以使用 intent(而不是通知)执行此操作:
Intent serviceIntent = new Intent(this, ForegroundService.class);
startForegroundService(serviceIntent);
如果要显示通知,则该行
notificationManager.notify(NOTIFICATION_ID, notification);
不见了。
评论