2012-07-28 13 views
5

Questo è fonte di confusione. Sono guardo la classe Android 2.2.2_r1 source code for the NotificationManager, e vedo il metodo getService() che è definita come public e static. Tuttavia, eclissi mi sta dicendo:Non è possibile utilizzare un metodo statico pubblico?

Il metodo getService() non è definito per il tipo di NotificationManager sulla linea

Object o = NotificationManager.getService(); 

Il mio progetto è la costruzione di contro Android 2.2/API Livello 8. I provato ad utilizzare la riflessione per vedere i nomi dei metodi e modificatori, e abbastanza sicuro, sono tornato

public static getService

Mi manca qualcosa qui? Perché eclissi mi direbbe che questo metodo non esiste?

risposta

5

troverete una risposta molto dettagliata in this post.

In breve: perché si compila lo android.jar, che ha rimosso tutti i metodi nascosti (come quello che si sta tentando di accedere). Saranno lì solo in runtime, per l'uso interno di Android.


Ma visto che forse ne hai anche bisogno. Il modo giusto per accedere al NotificationManager è tramite il metodo di un contesto getSystemService:

NotificationManager nm = (NotificationManager)ctx.getSystemService(Context.NOTIFICATION_SERVICE); 

Con context essendo un contesto valido (come vostra attività in corso).

+0

È strano, stavo leggendo quel post, sono tornato e ho scoperto che lo avevate postato come risposta. Io in realtà sto cercando di trovare un hack che mi avrebbe permesso di ottenere un elenco delle notifiche, quindi il modo normale di ottenere il manager di notifica non è quello che mi serve. – you786

+0

Siamo spiacenti. Non capisco esattamente perché il modo normale non funzioni per te? Il 'NotificationManager' restituito da questo metodo è lo stesso come quello restituito da' getService'. –

+0

@ you786 - spontaneamente direi che non è possibile trovare una lista in questo modo - almeno non tramite l'API 'INotificationManager' che è quella che' NotificationManager' usa internamente per parlare con 'NotificationManagerService'. – Jens

Problemi correlati