2017-05-31 3 views
1

Je construis une application qui surveille l'emplacement GPS à 10 secondes d'intervalle dans un fil d'arrière-plan et la teste contre certains critères, et si le test réussit, il envoie alors un message à un récepteur de radiodiffusion. Le code suivant pour le récepteur obtient la latitude et la longitude du fil de fond, et fonctionne très bien simplement afficher le résultat dans un toast.Appeler une autre activité d'un récepteur de radiodiffusion

package com.barney.gpstracking; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.Toast; 

public class PosReceiver extends BroadcastReceiver { 
    double lat, lon; 
    String slat, slon; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Bundle params = intent.getExtras(); 
     if (params != null) { 
      lat = params.getDouble("lati"); 
      slat = String.valueOf(lat); 
      lon = params.getDouble("long"); 
      slon = String.valueOf(lon); 
     } 
     Toast.makeText(context, "Position is:" + lat + " " + lon, Toast.LENGTH_LONG).show(); 
    } 
} 

Cependant, si je remplace le pain grillé avec un appel pour démarrer une autre activité comme suit:

  lon = params.getDouble("long"); 
      slon = String.valueOf(lon); 
     } 
     Intent goPop=new Intent(context,PopUpActivity.class); 
     context.startActivity(goPop); 
    } 
} 

il compile et installe sur mon appareil ok mais je reçois une erreur d'exécution dès comme il essaie de recevoir une diffusion. Le PopUpActivity que je suis en train d'appeler fonctionne parfaitement si je tente de l'appeler d'ailleurs (par exemple de l'activité principale). Je suppose donc que l'intention goPop ci-dessus est incorrecte. J'ai consulté des conseils en réponse à des questions similaires, mais je n'arrive pas à comprendre le problème. Quelqu'un peut-il m'aider s'il-vous-plaît?

+1

Aussi cela pourrait être la même chose https://stackoverflow.com/questions/9137477/passing-data-from-broadcast-receiver-to-another-activity?rq=1 – Ivan86

+0

afficher le logcat –

Répondre

0

essayer cela, son travail pour moi.

Intent in = new Intent(context, Popup.class); 
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
context.startActivity(in); 
+0

Fonctionne pour moi aussi! Très bien, merci - Chris –

+0

si vous pensez que la bonne réponse pour que vous puissiez voter juste et cocher droit drapeau, il aide les autres à obtenir réponse. –