Chciałbym uzyskać jak najwięcej informacji z obiektu StatusBarNotification
-obiekt, jak to tylko możliwe. W tej chwili jedyną "wiarygodną" informacją, którą można uzyskać, jest właściwość tickerText
. Używam następujący kod, aby uzyskać tytuł notyfikacji i tekst przez RemoteViews
, ale wiele czasu, tytuł i/lub tekst będzie po prostu zerowa :-(:Wiarygodny sposób pobierania informacji StatusbarNotification (tytuł, tekst powiadomienia)
//Get the title and text
String mTitle = "";
String mText = "";
try {
RemoteViews remoteView = sbn.getNotification().contentView;
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewGroup localView = (ViewGroup) inflater.inflate(remoteView.getLayoutId(), null);
remoteView.reapply(getApplicationContext(), localView);
TextView tvTitle = (TextView) localView.findViewById(android.R.id.title);
TextView tvText = (TextView) localView.findViewById(16908358);
mTitle = (String)tvTitle.getText();
mText = (String)tvText.getText();
} catch (Exception e){
Log.e(TAG, "Error getting notification title/text: " + e);
}
Czy istnieje alternatywa (bardziej niezawodny) Mogę "ręcznie" kodować identyfikatory zasobów dla "popularnych" powiadomień, takich jak Gmail, SMS itp., ale może to przerwać w dowolnym momencie, gdy te aplikacje są aktualizowane.Dzięki!
Dzięki, alanv, to naprawdę interesujące! Nie sądziłem, że byłoby to podejście "akceptowalne", ponieważ nazwy (i int-ID) zasobów w innych pakietach mogą się zmieniać cały czas. Spróbuję więc ręcznie wyłowić identyfikatory zasobów najpopularniejszych pól tekstowych związanych z tytułem/streszczeniem powiadomień. – Nick
@Wyzywaj jakieś pomysły na to, jak to zrobiłeś? Ponadto, wiele razy wyjątki są zgłaszane podczas próby nadmuchania identyfikatora zasobu układu. – nhaarman
@Niek, udostępnię tutaj moje rozwiązanie, gdy już to zrobię. Dostaję również wyjątki od inflacji układu: - /. Widziałem inne rozwiązanie, które polega na iteracji nad układem TextView ids (bez wcześniejszego zawyżania rzeczywistego układu). Zobaczę, czy uda mi się go znaleźć ponownie. – Nick