如何在用户点击我的通知后禁用关闭通知的面板(在主体上,而不是操作按钮上)?
我使用notificationBuilder。设置正在进行(true)
和通知生成器。setAutoCancel(错误)
但面板继续关闭。我做错了什么?
补充:我也使用以下代码:
Intent intentNotification intentNotification = new Intent( contextApplication, MyBroadcast.class);
intentNotification.putExtra( "reload", "1");
PendingIntent pendingIntent = PendingIntent.getBroadcast( contextApplication, 0, intentNotification, PendingIntent.FLAG_UPDATE_CURRENT);
notificationBuilder.setContentIntent( pendingIntent);
notificationBuilder.setAutoCancel( false); // this not work because setContentIntent work
如果我删除此代码,通知面板将保持在屏幕上显示。当我添加此代码面板时隐藏。但我需要通过点击通知体创建对MyBroadcast的调用。有没有办法通过点击通知体来呼叫我的广播?
地址2:在@NIPHIN answer上,我尝试在我的广播接收器内恢复原生化面板:
if( android.os.Build.VERSION.SDK_INT <= 16) Class.forName( "android.app.StatusBarManager").getMethod( "expand").invoke( contextApplication.getSystemService( "statusbar"));
else Class.forName( "android.app.StatusBarManager").getMethod( "expandNotificationsPanel").invoke( contextApplication.getSystemService( "statusbar"));
// manifest need <uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
这项工作是正确的,但不清楚:面板首先关闭,几分钟(秒)后恢复。
有办法禁用关闭面板吗?
在builder中使用以下代码:-
setAutoSubel(false)
我认为你不能这样做。如果您看到通知单击的AOSP代码,在ClickHandler中处理单击后,面板将立即关闭
下面的代码来自BaseStatusBar.java
try {
mBarService.onNotificationClick(mPkg, mTag, mId);
} catch (RemoteException ex) {
}
// close the shade if it was open
animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
使用通知Builder.set自动取消(false)
要关闭状态栏,请使用此
private int currentApiVersion = android.os.Build.VERSION.SDK_INT;
Object sbservice = context.getSystemService("statusbar");
try {
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
if (currentApiVersion <= 16) {
Method collapse = statusbarManager.getMethod("collapse");
collapse.invoke(sbservice);
} else {
Method collapse2 = statusbarManager.getMethod("collapsePanels");
collapse2.invoke(sbservice);
}
} catch (Exception e) {
e.printStackTrace();
}
根据此答案,单击按钮通知时关闭状态栏
我浏览了Stackoverflow,发现有人问了这个问题,但我没有找到任何解决方案。 我有一个带有两个按钮的自定义通知。我想在按下通知按钮后关闭状态栏面板,但不知道如何关闭。如果我按下通知本身(也就是contentIntent),面板就会关闭,这也是我想要的按钮。 这是我的通知代码:
我的通知包含几个按钮: 1个按钮启动主活动(执行此操作时应关闭状态栏) 其中4人发送待定意图以控制音乐(应保持状态栏打开) 问题是,第一个按钮没有关闭状态栏。。。 第一个按钮发送的Pending帐篷: 活动已正确启动,但状态栏仍在那里,不会自行关闭<我是不是错过了一面旗帜?我可以通过MyActivity程序关闭状态栏吗。onResume() 编辑:顺便说一下,通知是由服务推送的 感谢=)
第二个尝试是使用Firebase云消息传递,但据我所知,这种机制只允许发送通知。但如何以编程方式处理事件并创建通知?请给我一个例子或一种方法与FCM或一个更优雅的解决方案,如果它帮助我完成任务。
由于API级别为16(Jelly Bean),因此可以使用 但是当我向通知添加一个操作并且按下该操作时,通知不会被取消。当单击通知本身时,可以通过以下方式取消通知 或 但显然,这与通知相关联的操作无关。 有什么提示吗?或者这还不是API的一部分?我什么也没找到。
我知道这个问题似乎重复,但为了我的要求,我已经在网上搜索了很多帖子,但没有一个对我有效。 我的要求 为此,我尝试了以下场景 情景1 使用将通知数据从传输到Launcher/Main活动,并根据bundle数据重定向到特定活动/片段 情景3 通过使用 按照上面的场景,当应用程序打开时,一切工作都很好,但如果我的应用程序关闭了,则意味着它总是重定向到main/launcher活动