完全なエラーには次も含まれます。
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% は、上記のコードまたは null インテントを渡すことに問題はありません。ただし、これはアプリケーションの非常に重要な部分であるため、1% についてこれを解決する必要があります。
どんな提案でも大歓迎です。