Как программно закрыть панель уведомлений

Я хочу поделиться пунктом уведомления 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сервис или любая другая альтернатива?

Обновить:

Я решил вышеупомянутую проблему только с 2 строками кода. Нет необходимости звонить STATUS_BAR_SERVICE.

Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
    mContext.sendBroadcast(it);

Вызов этого намерения автоматически закроет уведомление

1 ответ

Да, это разрешение "android.permission.STATUS_BAR" доступно только системным приложениям, но не сторонним приложениям.

Вы можете попробовать ниже метод:

  1. Создайте некоторое уведомление, передав в него ожидающее намерение.
  2. Создайте отложенное намерение с помощью акции в качестве действия. Теперь вы сможете использовать опцию поделиться.

@ Аманда Фернандес, вы можете попробовать метод выше

Другие вопросы по тегам