当我长按主页按钮并终止我的应用程序时,通知已从状态栏中删除,但我想在应用程序终止时保留它,当应用程序终止时如何在状态栏上保留通知?
问问题
2377 次
3 回答
0
您的通知需要由在我关闭的活动后仍然存在的东西拥有,例如Service
. 创建一个Service
管理您的通知的小程序。您的活动可以向服务发送意图,或绑定到服务并直接通过连接调用方法,以修改通知的状态。
我在移动设备上,因此无法轻松构建示例...敬请期待。^_^
于 2016-02-27T22:12:06.527 回答
0
activity
在或fragment
您想要通知服务的地方创建如下所示的方法。然后在那里调用这个方法。
private void buildNotification(){
Intent intent = new Intent(getActivity(), NotificationReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, intent, 0);
AlarmManager am = (AlarmManager) getActivity().getSystemService(getActivity().ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, myCalendar.getTimeInMillis(), pendingIntent);
}
现在创建一个NotificationReceiver.class
扩展BroadcastReceiver
如下的类(这里我创建了)。
public class NotificationReceiver extends BroadcastReceiver{
private static final int NOTIFICATION_ID = 1991;
@Override
public void onReceive(Context context, Intent intent) {
int num = 0;
Intent contentIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, contentIntent, PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setSmallIcon(R.drawable.ic_notifications_black_24dp);
builder.setContentTitle("your title.");
builder.setContentText("your text.");
builder.setContentIntent(pendingIntent);
builder.setTicker("ticker text.");
builder.setAutoCancel(true);
builder.setOnlyAlertOnce(true);
builder.setDefaults(Notification.DEFAULT_ALL);
builder.setNumber(++num);
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(NOTIFICATION_ID, builder.build());
}
}
这将解决您的问题。
更新
我忘了提到您还必须添加receiver
.AndroidManifest.xml
<receiver android:name=".NotificationReceiver"/>
即你必须把你的class
文件receiver
于 2016-02-26T09:10:06.020 回答