我正在尝试制作状态栏通知,通知应用何时处于活动状态,并且当应用处于非活动状态时通知取消。 当用户通过单击应用程序中的“开启”按钮打开应用程序时,我收到通知。当用户以相同的方式关闭应用程序时,我也收到了取消通知。 我遇到的问题是用户可以通过调高铃声音量来切换应用程序,但是当应用程序以这种方式关闭时,通知不会取消。 我得到错误:
value
MainActivity:
System services not available to Activities before onCreate()
buttonToggleDetect.setOnClickListener(new View.OnClickListener() {
@Override
// when the main button is clicked
public void onClick(View v) {
setDetectEnabled(!detectEnabled);
mTracker.send(new HitBuilders.EventBuilder()
.setCategory("Home")
.setAction("Share")
.build());
if (isServiceRunning()){
showStatusBarIcon("App","App Active",true);
}
else showStatusBarIcon("App","App InActive", false);
}
RingerModeStateReceiver类
public void showStatusBarIcon(String notificationTitle, String notifactionMessage, boolean serviceActive){
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.info_icon,"App Active",System.currentTimeMillis());
Intent notifactionIntent = new Intent(this,MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,notifactionIntent,0);
notification.setLatestEventInfo(MainActivity.this, notificationTitle, notifactionMessage, pendingIntent);
if (serviceActive) {
notificationManager.notify(9999, notification);
}
else {
notificationManager.cancel(9999);
}
}
}
谁能看到帮助我,看看我哪里出错了?感谢答案 0 :(得分:0)
您需要在关闭应用之前删除通知。
您可以从应用的onDestroy甚至是服务中进行此操作。
问题是" showStatusBarIcon"无法从broadcastReciever调用您需要使用上下文。
答案 1 :(得分:0)
从另一篇文章中我找到答案。 在Broadcast Receiver类中,我替换了
mainActivity.showStatusBarIcon("App","App InActive", false);
与
NotificationManager notifactionManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
notifactionManager.cancel(9999);
这是一个链接 answer in other post
我搜索了“如何取消广播中的通知”以找到帖子