我想分享 GCM 通知项。共享按钮响应点击事件并且项目也被共享。这里唯一的问题是,通知托盘下方存在意图选择器对话框。用户必须手动关闭状态栏,然后选择要共享的应用程序。我想以编程方式关闭状态栏,这样当用户单击共享时,它会直接向他显示选择应用程序的对话框。
我发现该status bar
服务可用于打开/关闭服务。但它仅限于系统应用程序。
private void closeNotificationTray() {
Object service = mContext.getSystemService(Context.STATUS_BAR_SERVICE);
Method collapse;
try {
Class<?> statusBarMngr = Class.forName("android.app.StatusBarManager");
if (Build.VERSION.SDK_INT >= 17)
collapse = statusBarMngr.getMethod("collapsePanels");
else
collapse = statusBarMngr.getMethod("collapse");
collapse.invoke(service);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
我使用了上面的代码。但我收到“STATUS_BAR_SERVICE 无法解决”错误。当我在清单中添加以下权限时:
<uses-permission
android:name="android.permission.STATUS_BAR" />
我得到了,只允许系统应用程序。它不允许我在我的应用程序中使用。有没有办法使用status bar
服务或任何其他替代方案?
更新:
我只用两行代码解决了上述问题。无需调用 STATUS_BAR_SERVICE。
Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
mContext.sendBroadcast(it);
调用此意图将自动关闭通知