Android 我需要在不影响前台服务的情况下删除通知
我需要删除通知。在不影响应用程序前台服务的情况下。提前感谢Android 我需要在不影响前台服务的情况下删除通知,android,notifications,Android,Notifications,我需要删除通知。在不影响应用程序前台服务的情况下。提前感谢 Notification note = new Notification(R.drawable.ic_blank,"",System.currentTimeMillis()); Intent i=new Intent(this, MyLocationListener.class); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
Notification note = new Notification(R.drawable.ic_blank,"",System.currentTimeMillis());
Intent i=new Intent(this, MyLocationListener.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pi=PendingIntent.getActivity(this, 0,i, 0);
note.setLatestEventInfo(this, "","", pi);
note.flags |= Notification.FLAG_NO_CLEAR;
startForeground(42, note);
Android操作系统不喜欢你这样做,因为用户有权知道你在他们的设备上运行前台服务。 但如果必须删除前台服务通知: 要在前台服务仍在运行时删除通知区域(状态栏)中的通知图标,请执行以下操作: 只需在通知生成器中将优先级设置为最小值(-2):
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Service Started")
.setTicker("Music Playing")
.setWhen(System.currentTimeMillis());
例如:
/* (Notification.PRIORITY_MIN) will remove the notification in statusbar */
builder.setPriority(Notification.PRIORITY_MIN)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Service Started")
.setTicker("Music Playing")
.setWhen(System.currentTimeMillis());
这将仅删除通知区域中的小通知图标
如果还需要删除通知抽屉中的详细信息通知矩形:
那么您需要做的事情就更复杂了:
您需要以前台身份启动服务,然后启动另一个前台服务,该服务的通知ID与原始服务中的相同。
然后关闭(stopself())新的前台服务,Android系统将删除通知(而之前启动的原始服务将保留在前台而不显示通知)
这在5.1.1中运行良好,我不知道android团队是否已经关闭了棉花糖的漏洞
顺便说一句:
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Service Started")
.setTicker("Music Playing")
.setWhen(System.currentTimeMillis());
然后,Android系统将继续显示一个关于您的服务的通知矩形(标题为“此服务正在运行,触摸以获取更多信息或停止服务”),按下此矩形将引导用户在设置->应用程序->应用程序管理器上找到您的应用程序信息,并选择“强制停止”这项服务。
关于这一点,你可以在这里阅读更多希望有帮助:-)添加此行生成器。setPriority(Notification.PRIORITY_MIN)将从状态栏和锁定屏幕中删除通知图标
同时删除或注释builder.setSmallIcon(R.drawable.ic_launcher)会删除通知图标,即使在设备解锁时向下滚动通知,但我不确定它在android中如何工作N您所说的“不影响应用程序的前台服务”是什么意思?启动时,startforeground方法与通知一起使用。如果删除我的通知,则不会影响应用程序进入前台。最后发现,如果没有通知,前台服务将无法启动:(Android 7.1中修复了使用第二个服务删除通知的技巧的可能副本。+1建议用户禁用“显示通知”对于操作系统设置中的应用程序。我已经测试了该方法,并确认它可以从Android 4.1到Android 7.1运行。我相信没有看到通知的图标已经修复了一段时间。是的,它会修复,但如果你向下滚动状态栏,你可能会发现与你的应用程序相关的通知。但这肯定是隐藏通知的最简单方法n icon..Oops,抱歉,我的意思是键入“不设置通知图标。是的,将通知优先级设置为
priority\u MIN
是从状态栏隐藏通知图标的好方法。关于不设置通知图标(您回答中关于删除setSmallIcon()的部分)
,从Android 4.3开始,这项功能不再有效。