Java 通知出现后如何返回活动?通知不可点击
我有问题-单击收到的通知后无法返回到主要活动。通知本身不可单击。在onPause方法中触发通知(在后台) 我的主要活动是MainActivity,它通过PendingEvent和AlarmManager设置通知Java 通知出现后如何返回活动?通知不可点击,java,broadcastreceiver,android-notifications,alarmmanager,android-pendingintent,Java,Broadcastreceiver,Android Notifications,Alarmmanager,Android Pendingintent,我有问题-单击收到的通知后无法返回到主要活动。通知本身不可单击。在onPause方法中触发通知(在后台) 我的主要活动是MainActivity,它通过PendingEvent和AlarmManager设置通知 public class MainActivity extends AppCompatActivity { private NotificationManager notificationManager; private static final int NOTIFY_ID = 1;
public class MainActivity extends AppCompatActivity {
private NotificationManager notificationManager;
private static final int NOTIFY_ID = 1;
private static final String CHANNEL_ID = "CHANNEL_ID";
NotificationPublisher notificationPublisher;
Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createNotificationChannel();
}
private void createNotificationChannel() {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
CharSequence name = "LemubitReminderChannel";
String description = "Channel for Lemubit Reminder";
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel("notifyLemubid", name, importance);
channel.setDescription(description);
notificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(channel);
}
}
private void reminderMethod (){
Toast.makeText(this, "Напоминание о запуске фонового уведомления", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext(), NotificationPublisher.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
long inPauseTime = System.currentTimeMillis();
long ten = 2 * 1000;
alarmManager.set(AlarmManager.RTC_WAKEUP, inPauseTime + ten, pendingIntent);
}
@Override
protected void onPause() {
super.onPause();
reminderMethod();
}
}
广播接收机
public class NotificationPublisher extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
int unicode = 0x1F62D;
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "notifyLemubid")
.setAutoCancel(true)
.setContentTitle("текст " + getEmojiByUnicode(unicode))
.setContentText("текст")
.setSmallIcon(R.drawable.ic_launcher_background)
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context);
notificationManagerCompat.notify(200, builder.build());
}
public String getEmojiByUnicode(int unicode){
return new String(Character.toChars(unicode));
}
}
您需要在
通知上设置contentIntent
,然后,当用户单击通知时,contentIntent
将被调度。如果您希望用户打开应用程序的活动
,则只需为您的活动
创建一个意图
,将其包装在挂起内容
中,并在`通知'上调用setContentIntent()
。关于如何实现这一点,有数百种方法和教程,只需搜索一下。您需要在通知上设置contentIntent
,然后,当用户单击通知时,contentIntent
将被调度。如果您希望用户打开应用程序的活动
,则只需为您的活动
创建一个意图
,将其包装在挂起内容
中,并在`通知'上调用setContentIntent()
。有上百种方法和教程介绍如何执行此操作,只需搜索一下。是否触发了BroadcastReceiver
?是否显示通知
?由于您的意图
是针对广播接收器
,您应该删除标记标记活动_新任务
或标记活动_清除任务
。如果您对活动有意图
,则使用这些标志。我删除了它们,但没有任何帮助。是否可以使用getBroadcast返回活动?请回答我的问题。BroadcastReceiver
是否被触发(是否调用onReceive()
?通知
是否显示?我想是的,通知将显示广播接收器
是否触发?是否显示通知
?由于您的意图
是针对广播接收器
,您应该删除标记标记活动_新任务
或标记活动_清除任务
。如果您对活动有意图
,则使用这些标志。我删除了它们,但没有任何帮助。是否可以使用getBroadcast返回活动?请回答我的问题。BroadcastReceiver
是否被触发(是否调用onReceive()
?通知
是否显示?我想是的,将显示通知