在Android中打开布局而不触摸通知

在Android中打开布局而不触摸通知,android,android-intent,android-notifications,android-pendingintent,android-alarms,Android,Android Intent,Android Notifications,Android Pendingintent,Android Alarms,我用安卓系统做了一个闹钟。我希望在警报时间到来时,以编程方式打开布局,而无需单击通知 这是代码 那是我的火警功能 public void fireAlarm() { c = Calendar.getInstance(); seconds = c.get(Calendar.SECOND)*1000; minutes = c.get(Calendar.MINUTE)*60*1000; hours = c.get(Calendar.HOUR)*3600*1000; ct = seconds + mi

我用安卓系统做了一个闹钟。我希望在警报时间到来时,以编程方式打开布局,而无需单击通知

这是代码

那是我的火警功能

public void fireAlarm() {
c = Calendar.getInstance(); 
seconds = c.get(Calendar.SECOND)*1000;
minutes = c.get(Calendar.MINUTE)*60*1000;
hours = c.get(Calendar.HOUR)*3600*1000;
ct = seconds + minutes + hours;
sure = (tp.getCurrentMinute()*60*1000) + (tp.getCurrentHour()*3600*1000);
finalarm = sure - ct;
Toast.makeText(MainActivity.this, "Alarm " + finalarm/1000 + " Saniye sonra çalacak", Toast.LENGTH_LONG).show();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
alarmManager.set( AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis()+finalarm , pendingIntent );
}
这就是通知代码

private void generateNotification(Context context, String message) {
System.out.println(message+"++++++++++2");
int icon = R.drawable.ic_launcher;
long when = System.currentTimeMillis();
notificationManager = (NotificationManager) context
      .getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(icon, message, when);
String title = context.getString(R.string.app_name);
String subTitle = context.getString(R.string.app_name);
Intent notificationIntent = new Intent(context, MainActivity.class);
notificationIntent.putExtra("content", message);
PendingIntent intent = PendingIntent.getActivity(context, 111,notificationIntent, 0);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
        Intent.FLAG_ACTIVITY_SINGLE_TOP);

    notification.setLatestEventInfo(context, title, subTitle, intent);
    //To play the default sound with your notification:
    notification.sound = Uri.parse(MainActivity.path);
    notification.defaults |= Notification.DEFAULT_VIBRATE;
    notificationManager.notify(0, notification);
}

我应该使用不同的服务还是什么?谢谢。

如果您使用的是广播接收器,您的“onReceive”重写方法应该有一个作为参数接收的上下文,这是发送警报的活动的上下文,在这种情况下,只需:

notificationIntent.setFlag(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(notificationintent); 
在生成化方法中的某个地方

如果您没有使用广播接收器,这可能是一种更好的方法


或者干脆把这段代码放在你的generateNotification方法的末尾,它可能真的可以工作,只是我还没有测试过自己。

在那之后,必须有意图。FLAG_ACTIVITY_NEW_TASK logcat说。它的作品非常感谢!多亏了你,我一开始没有添加FLAG\u ACTIVITY\u NEW\u任务,我认为这更容易,所以编辑了我的答案,添加了你对解决方案的研究