完整的错误还包含:
android.app.RemoteServiceException: Bad notification for startForeground:
我在这里阅读了其他类似的帖子,尝试了他们的建议并阅读了他们的链接,但仍有少数用户报告此错误。
概述
活动由外部应用程序启动。此活动启动自定义语音识别服务。它不使用 startForeground:
this.startService(intent);
然后活动调用finish();
该服务启动自定义语音识别类并在构造函数中将上下文传递给它。在“检测到语音开始”时,我显示以下通知:
String notTitle = "Hello";
String notificationText = "hello there";
notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
myNotification = new Notification(
android.R.drawable.ic_btn_speak_now, notTitle,
System.currentTimeMillis());
myNotification.flags |= Notification.FLAG_AUTO_CANCEL;
Intent intent = new Intent();
intent.setAction("com.android.settings.TTS_SETTINGS");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, 0);
myNotification.contentIntent = pendingIntent;
myNotification.setLatestEventInfo(mContext, notTitle,
notificationText, pendingIntent);
notificationManager.notify(MY_NOTIFICATION_ID, myNotification);
该通知不需要执行任何“onClick”操作,因为一旦用户停止讲话,它就会被取消。我最初传递了一个“空意图”,但是,在阅读了很多帖子之后,我添加了显示 TTS 设置的随机意图/pendingIntent,只是为了排除这个问题。
我的 99% 的用户对上述代码或传递空意图都没有问题。不过,我需要为 1% 解决这个问题,因为它是我的应用程序中非常重要的一部分。
任何建议将不胜感激。