Как программно закрыть панель уведомлений
Я хочу поделиться пунктом уведомления 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" доступно только системным приложениям, но не сторонним приложениям.
Вы можете попробовать ниже метод:
- Создайте некоторое уведомление, передав в него ожидающее намерение.
- Создайте отложенное намерение с помощью акции в качестве действия. Теперь вы сможете использовать опцию поделиться.
@ Аманда Фернандес, вы можете попробовать метод выше