Vorrei ottenere più informazioni da un StatusBarNotification
-oggetto possibile. Al momento, l'unica informazione "affidabile" a cui è possibile accedere è la proprietà tickerText
. Sto utilizzando il seguente codice per ottenere il titolo del testo di notifica e via RemoteViews
, ma un sacco di tempo, il titolo e/o testo sarà semplicemente :-(nullo:Modo affidabile di recuperare StatusbarNotifica dettagli (titolo, testo di notifica)
//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);
}
C'è qualche alternativa (più affidabile possibile? Potrei "codificare a mano" gli ID delle risorse per notifiche "popolari" come Gmail, SMS, ecc., ma questo potrebbe interrompersi in qualsiasi momento quando tali app sono aggiornate. Grazie!
Grazie, alanv, è davvero interessante! Non pensavo che questo sarebbe stato un approccio "accettabile", dal momento che i nomi (e int-ID) delle risorse in altri pacchetti possono cambiare continuamente. Proverò a scavare manualmente gli ID delle risorse dei campi di testo titolo/notifica di riepilogo dell'app più popolari, quindi. – Nick
@ Hai qualche idea su come lo faresti? Inoltre, molte volte vengono generate eccezioni quando si tenta di aumentare l'ID della risorsa di layout. – nhaarman
@Niek, condividerò qui la mia soluzione una volta terminata. Ottengo anche le eccezioni di inflazione del layout: - /. Ho visto un'altra soluzione dove eseguono l'iterazione degli id di TextView del layout (senza gonfiare in anticipo il layout effettivo). Vedrò se riesco a trovarlo di nuovo. – Nick