次のコードを使用して、broadcastReceiverのアクティビティを起動しようとします
Intent i = new Intent(context, AlarmNotification.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { // This is at least Android 10...
NotificationManager mgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (mgr.getNotificationChannel(CHANNEL_WHATEVER)==null) {
mgr.createNotificationChannel(new NotificationChannel(CHANNEL_WHATEVER,
"Whatever", NotificationManager.IMPORTANCE_HIGH));
}
mgr.notify(NOTIFY_ID, buildNormal(context, i).build());
}
private NotificationCompat.Builder buildNormal(Context context, Intent intent) {
NotificationCompat.Builder b=
new NotificationCompat.Builder(context, CHANNEL_WHATEVER);
b.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.setSmallIcon(Android.R.drawable.ic_lock_idle_alarm)
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(TEXT)
.setContentText(TEXT)
.setFullScreenIntent(buildPendingIntent(context, intent), true);
return(b);
}
private PendingIntent buildPendingIntent(Context context, Intent intent) {
return(PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT));
}
最初は、すべてが問題なく動作します。ただし、アプリの設定を入力した場合は、CHANNEL_WHATEVERの通知チャネルをオフにしてから、再度オンにします。後でNotificationManager.notifyを呼び出すと、通知ドロワーに通知が表示されますが、アクティビティは開始されません。アプリを削除して再インストールすると、再び正常に動作します。 Android 10のバグを報告する必要がありますか、それとも何かできることはありますか?
Androidは、フルスクリーンインテントを使用しても、アクティビティが表示されることを許可しません。
一部のプラットフォームでは、システムUIは、ユーザーがデバイスを使用しているときに、このインテントを起動する代わりに、ヘッドアップ通知を表示することを選択する場合があります。
OS 10のフルスクリーンインテントでアクティビティを起動する方法について、メディアで私の記事を読んでください。この記事では、ヘッドアップ通知を表示し、アクションボタンのクリックを処理する方法についても説明しています。