Autore Topic: Notification da un Service  (Letto 1333 volte)

Offline psicomant

  • Utente junior
  • **
  • Post: 95
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    OSX 10.6.5
Notification da un Service
« il: 13 Novembre 2010, 12:46:02 CET »
0
Salve, ho un problema durante la notifica da parte di un servizio.
Posto il codice:

Uno snippet del mio servizio...
Codice (Java): [Seleziona]
public class sensorService extends Service{

[...]
                @Override
                public void onCreate(){
                        super.onCreate();
                        // start service here...
                        startService();
                }

[...]

        private void startService(){
                        Handler handler = new Handler();
                        handler.postDelayed(new Runnable(){

                                public void run() {
                                        int i = 0;
                                       
                                        String ns = Context.NOTIFICATION_SERVICE;
                                        NotificationManager nm = (NotificationManager)getSystemService(ns);
                                        int icon = R.drawable.notify;
                                        String tickerText = "RUN...";
                                        long when = System.currentTimeMillis();                                        
                                        Notification notification = new Notification(icon, tickerText, when);
                                        Context context = getApplicationContext();
                                        CharSequence contentTitle = "Service State";
                                        CharSequence contentText = "Running!";
                                        Intent notificationIntent = new Intent(sensorService.this, sensorService.class);
                                        PendingIntent contentIntent = PendingIntent.getActivity(null, 0, notificationIntent, 0);
                                        notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
                                        while (i <= 20) {
                                                notification = new Notification(icon, tickerText + i, when);
                                                nm.notify(MODULE_NOTIFICATION, notification);
                                        }
                                }
                               
                        }, 5000);
                }

se lo eseguo ottengo il seguente log di errore:
Codice: [Seleziona]
11-13 12:43:25.321: WARN/dalvikvm(7938): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
11-13 12:43:25.341: ERROR/AndroidRuntime(7938): FATAL EXCEPTION: main
11-13 12:43:25.341: ERROR/AndroidRuntime(7938): java.lang.NullPointerException
11-13 12:43:25.341: ERROR/AndroidRuntime(7938):     at android.app.PendingIntent.getActivity(PendingIntent.java:191)
11-13 12:43:25.341: ERROR/AndroidRuntime(7938):     at com.CSAMS.sensorService$1.run(sensorService.java:89)
11-13 12:43:25.341: ERROR/AndroidRuntime(7938):     at android.os.Handler.handleCallback(Handler.java:587)
11-13 12:43:25.341: ERROR/AndroidRuntime(7938):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-13 12:43:25.341: ERROR/AndroidRuntime(7938):     at android.os.Looper.loop(Looper.java:123)
11-13 12:43:25.341: ERROR/AndroidRuntime(7938):     at android.app.ActivityThread.main(ActivityThread.java:4627)
11-13 12:43:25.341: ERROR/AndroidRuntime(7938):     at java.lang.reflect.Method.invokeNative(Native Method)
11-13 12:43:25.341: ERROR/AndroidRuntime(7938):     at java.lang.reflect.Method.invoke(Method.java:521)
11-13 12:43:25.341: ERROR/AndroidRuntime(7938):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-13 12:43:25.341: ERROR/AndroidRuntime(7938):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-13 12:43:25.341: ERROR/AndroidRuntime(7938):     at dalvik.system.NativeStart.main(Native Method)
11-13 12:43:40.201: INFO/Process(7938): Sending signal. PID: 7938 SIG: 9
11-13 12:43:40.241: INFO/ActivityManager(65): Process com.CSAMS (pid 7938) has died.
11-13 12:43:40.256: WARN/ActivityManager(65): Scheduling restart of crashed service com.CSAMS/.sensorService in 5000ms
11-13 12:43:40.311: WARN/InputManagerService(65): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43fd6b30
11-13 12:43:45.280: INFO/ActivityManager(65): Start proc com.CSAMS for service com.CSAMS/.sensorService: pid=8520 uid=10033 gids={}
11-13 12:43:50.811: DEBUG/AndroidRuntime(8520): Shutting down VM
11-13 12:43:50.811: WARN/dalvikvm(8520): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
11-13 12:43:50.831: ERROR/AndroidRuntime(8520): FATAL EXCEPTION: main
11-13 12:43:50.831: ERROR/AndroidRuntime(8520): java.lang.NullPointerException
11-13 12:43:50.831: ERROR/AndroidRuntime(8520):     at android.app.PendingIntent.getActivity(PendingIntent.java:191)
11-13 12:43:50.831: ERROR/AndroidRuntime(8520):     at com.CSAMS.sensorService$1.run(sensorService.java:89)
11-13 12:43:50.831: ERROR/AndroidRuntime(8520):     at android.os.Handler.handleCallback(Handler.java:587)
11-13 12:43:50.831: ERROR/AndroidRuntime(8520):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-13 12:43:50.831: ERROR/AndroidRuntime(8520):     at android.os.Looper.loop(Looper.java:123)
11-13 12:43:50.831: ERROR/AndroidRuntime(8520):     at android.app.ActivityThread.main(ActivityThread.java:4627)
11-13 12:43:50.831: ERROR/AndroidRuntime(8520):     at java.lang.reflect.Method.invokeNative(Native Method)
11-13 12:43:50.831: ERROR/AndroidRuntime(8520):     at java.lang.reflect.Method.invoke(Method.java:521)
11-13 12:43:50.831: ERROR/AndroidRuntime(8520):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-13 12:43:50.831: ERROR/AndroidRuntime(8520):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-13 12:43:50.831: ERROR/AndroidRuntime(8520):     at dalvik.system.NativeStart.main(Native Method)

In pratica la mia domanda si puo' ridurre a:
Come posso fare a farmi dare una Notification da un servizio in background se questa per essere postata ha bisogno di un'Activity di riferimento?   ???

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Notification da un Service
« Risposta #1 il: 13 Novembre 2010, 13:57:51 CET »
0
Il primo parametro è di tipo Context, Prova a passargli quello del tuo service (ovvero passando this)

Offline DarKprince

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Play Store ID:
    Saverio Guardato
  • Sistema operativo:
    Windows 7, Ubuntu 10.10
Re:Notification da un Service
« Risposta #2 il: 02 Febbraio 2011, 15:10:42 CET »
0
mi accodo al topic: e come posso associare una azione al click della notifica lanciata da un service??

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Notification da un Service
« Risposta #3 il: 02 Febbraio 2011, 15:21:39 CET »
0
Se hai dei problemi apri un tuo thread, la domanda che hai posto non c'entra nulla con questo. ;)

Offline DarKprince

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Play Store ID:
    Saverio Guardato
  • Sistema operativo:
    Windows 7, Ubuntu 10.10
Re:Notification da un Service
« Risposta #4 il: 02 Febbraio 2011, 15:24:56 CET »
0
pensavo di essere nel posto giusto dato che il titolo è ''notification da un service''