我正在处理一个应用程序,它会在触发警报时显示通知。通知仅在应用程序仍在运行时显示,但我希望即使应用程序关闭也会保留通知,因此当用户选择通知时,它将再次运行应用程序。这样做有什么办法吗?任何帮助将不胜感激。我还要感谢提供的任何示例或教程。非常感谢你。
答案 0 :(得分:3)
我正在使用
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
我希望将来通过alarmMenager推送通知 当app仍在运行时它可以工作,而我调用allarm menager在futer中设置notify并关闭app我的通知没有显示。 我必须做什么?
这里你有我的活动发件人:
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR, HOUR_OF_DAY);
cal.set(Calendar.MINUTE, MINUTE);
//cal.add(Calendar.SECOND, SECOND_OF_DAY);
Intent intent = new Intent(UnityPlayer.currentActivity, TimeAlarm.class);
intent.putExtra("alarm_status", statusMessage);
intent.putExtra("alarm_title", title);
intent.putExtra("alarm_content", content);
Log.i("SenderEvent ", "przygotowane dane");
PendingIntent sender = PendingIntent.getBroadcast(UnityPlayer.currentActivity.getApplicationContext(), REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
和接收者:
Bundle bundle = intent.getExtras();
String statusMessage = bundle.getString("alarm_status");
String title = bundle.getString("alarm_title");
String content = bundle.getString("alarm_content");
nm = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
new Intent(), 0);
Notification notif =new Notification();//R.drawable.ic_launcher,statusMessage, System.currentTimeMillis());;
//notif.largeIcon = bitmap;
notif.icon =2130837504;
notif.tickerText=statusMessage;
notif.when= System.currentTimeMillis();
/*
new Notification(0,
statusMessage, System.currentTimeMillis());*/
notif.setLatestEventInfo(context, title, content, contentIntent);
nm.notify(NOTIFY_ME_ID, notif);
当应用程序关闭时,将来推送通知有什么不对?
答案 1 :(得分:0)
首先,您需要使用服务创建通知。我之前有同样的问题。我正在使用phonegap,并从插件创建通知,但事实证明只有服务可以在后台运行。在服务中,我然后添加我的代码来创建通知,对于意图我使用广播接收器。
notificationManager = (NotificationManager) context.getSystemService(android.content.ContextWrapper.NOTIFICATION_SERVICE);
note = new Notification(imageResource, tickerText, System.currentTimeMillis() );
// Intent notificationIntent = new Intent(context, path.to.class);
Intent notificationIntent = new Intent(context, package.path.to.receiver.class);
notificationIntent.setAction(Intent.ACTION_VIEW);
notificationIntent = notificationIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
//contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
contentIntent = PendingIntent.getBroadcast(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
note.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
正如您在上面的代码中看到的,我注释掉了getActivity,并将其更改为getBroadcast。这是在服务中运行意味着您可以在应用关闭时收到通知。为了让接收者能够打开你的应用程序,如果关闭添加
...
@Override
public final void onReceive(Context context, Intent intent) {
Log.v('TAG','TEST');
//start activity
Intent i = new Intent();
i.setClassName("package.path", "package.path.mainActivity");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
...
和xml
<receiver android:name="path.to.receiver" android:label="@string/app_name">
<intent-filter>
<action android:name="path.to.receiver.BROADCAST" />
</intent-filter>
</receiver>
我希望这会有所帮助