Chcę udostępnić element powiadomienia GCM. Przycisk udostępniania reaguje na zdarzenia kliknięcia, a element jest również udostępniany. Jedynym problemem jest to, że okno wyboru opcji Intent znajduje się pod tacą powiadomień. Użytkownik musi ręcznie zamknąć pasek stanu, a następnie wybrać aplikację do udostępniania. Chcę programowo zamknąć pasek stanu, aby po kliknięciu udostępnionego przez użytkownika pokazywał mu on bezpośrednio okno dialogowe, w którym można wybrać aplikacje.Jak programowo zamknąć tacę powiadomień
Zauważyłem, że usługa status bar
może być używana do otwierania/zamykania usługi. Ale jest ograniczone do aplikacji systemowych.
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();
}
Użyłem powyższego kodu. Ale otrzymuję komunikat o błędzie "STATUS_BAR_SERVICE nie można rozwiązać". A kiedy dodałem poniżej permision w manifeście:
<uses-permission
android:name="android.permission.STATUS_BAR" />
Dostaję, dozwolony tylko dla systemu apps.It nie jest pozwalając mi korzystać w mojej aplikacji. Czy istnieje sposób korzystania z usługi status bar
lub jakiejkolwiek innej alternatywy?
Aktualizacja:
I rozwiązać powyższy problem z zaledwie 2 linii kodu. Nie ma potrzeby dzwonienia do STATUS_BAR_SERVICE.
Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
mContext.sendBroadcast(it);
Wywołanie tej intencji automatycznie zamyka powiadomienie
I rozwiązać ten problem. Sprawdź aktualizację rozwiązania –
, na której nie możesz polegać. co się dzieje, gdy otwarte jest rzeczywiste okno dialogowe na poziomie systemu? Miałem otwarte okno dialogowe na poziomie systemu, które zamknęło. –