Android 如何以编程方式关闭通知栏

Android 如何以编程方式关闭通知栏,android,statusbar,android-statusbar,system-services,Android,Statusbar,Android Statusbar,System Services,我想共享GCM通知项。“共享”按钮对单击事件做出响应,项目也会被共享。这里唯一的问题是,意向选择器对话框出现在通知托盘下方。用户必须手动关闭状态栏,然后选择要共享的应用程序。我想以编程方式关闭状态栏,这样当用户单击“共享”时,它会直接向他显示选择应用程序的对话框 我发现状态栏服务可用于打开/关闭服务。但它对系统应用程序是有限制的 private void closeNotificationTray() { Object service = mContext.getSystemSe

我想共享GCM通知项。“共享”按钮对单击事件做出响应,项目也会被共享。这里唯一的问题是,意向选择器对话框出现在通知托盘下方。用户必须手动关闭状态栏,然后选择要共享的应用程序。我想以编程方式关闭状态栏,这样当用户单击“共享”时,它会直接向他显示选择应用程序的对话框

我发现
状态栏
服务可用于打开/关闭服务。但它对系统应用程序是有限制的

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();
        }
调用此意图将自动关闭通知

是的,此权限“android.permission.STATUS_BAR”仅对系统应用程序可用,对第三方应用程序不可用

您可以尝试以下方法:

  • 通过向其中传递挂起的意图来创建一些通知
  • 将共享作为操作创建挂起的意图。 现在你可以使用股票期权了

  • @Amanda Fernandez你能试试上面的方法吗

    如果我在等待itnet的共享按钮上设置了FLAG\u CANCEL\u CURRENT FLAG,它会清除托盘中的物品。我希望它留在托盘中,只有当用户选择它时才应该清除。我解决了这个问题。请检查更新以获得解决方案您不能依赖更新。当实际的系统级对话框打开时会发生什么?我打开了一个系统级对话框,它关闭了它。
    <uses-permission
            android:name="android.permission.STATUS_BAR" />
    
    Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        mContext.sendBroadcast(it);