我正在开发具有支持 2.3.3 及以上操作系统版本的通知系统的应用程序。在小于 3 的 android OS 中,我们可以选择设置内容意图。整个通知区域都可以单击。
但是对于 OS 3.0 及更高版本,通过使用远程视图,我们有 3 个不同的按钮来执行相应的操作。通过打开通知抽屉,我们可以单击任何按钮来执行操作。
默认情况下单击按钮后,通知抽屉不会上升(或隐藏)。有没有办法以编程方式隐藏通知抽屉。请帮助我。
我正在开发具有支持 2.3.3 及以上操作系统版本的通知系统的应用程序。在小于 3 的 android OS 中,我们可以选择设置内容意图。整个通知区域都可以单击。
但是对于 OS 3.0 及更高版本,通过使用远程视图,我们有 3 个不同的按钮来执行相应的操作。通过打开通知抽屉,我们可以单击任何按钮来执行操作。
默认情况下单击按钮后,通知抽屉不会上升(或隐藏)。有没有办法以编程方式隐藏通知抽屉。请帮助我。
你在使用类似的东西
NotificationManager mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNM.cancelAll();
我用以下代码段解决了这个问题。但是不推荐使用这个。这可以在反射的帮助下实现。将来这可能会被弃用。
void collapseStatusBar(Context context) { // 访问系统状态栏。这不是公开的,所以将来可能会被弃用 Object service = context.getSystemService("statusbar");
Class<?> statusbarManager = null;
try {
statusbarManager = Class.forName("android.app.StatusBarManager");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.getMessage();
}
// Till 4.1 (JB), StatusBarManager collapse method did the job but from
// 4.2 it's been
// changed to collpasePanels, so perform the job accordingly
if (Build.VERSION.SDK_INT <= 16) {
Method collapseMethod = null;
try {
collapseMethod = statusbarManager.getMethod("collapse");
} catch (NoSuchMethodException e) {
e.getMessage();
}
collapseMethod.setAccessible(true);
try {
collapseMethod.invoke(service);
} catch (IllegalArgumentException e) {
e.getMessage();
} catch (IllegalAccessException e) {
e.getMessage();
} catch (InvocationTargetException e) {
e.getMessage();
}
} else {
Method collapsePanelsMethod = null;
try {
collapsePanelsMethod = statusbarManager
.getMethod("collapsePanels");
} catch (NoSuchMethodException e1) {
e1.getMessage();
}
collapsePanelsMethod.setAccessible(true);
try {
collapsePanelsMethod.invoke(service);
} catch (IllegalArgumentException e) {
e.getMessage();
} catch (IllegalAccessException e) {
e.getMessage();
} catch (InvocationTargetException e) {
e.getMessage();
}
}
}