Statut Gps activé / désactivé Récepteur de diffusion
J'essaie d'enregistrer un récepteur de radiodiffusion afin de recevoir des mises à jour lorsque le gps statut est changé.
Cependant, mon GpsChangeReceiver onReceive méthode ne semble pas être appelée lorsque l'état du gps est modifié à partir activé à désactivé ou vice-versa.
Tout d'abord, je suis l'enregistrement du récepteur:
GpsChangeReceiver m_gpsChangeReceiver = new GpsChangeReceiver();
this.registerReceiver(m_gpsChangeReceiver, new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION));
Alors , j'ai mon Récepteur gps
public class GpsChangeReceiver extends BroadcastReceiver
{
@Override
public void onReceive( Context context, Intent intent )
{
final LocationManager manager = (LocationManager) context.getSystemService( Context.LOCATION_SERVICE );
if (manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
//do something
}
else
{
//do something else
}
}
}
Enfin, mon manifeste contient:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Quelqu'un peut voir pourquoi le récepteur gps n'est jamais appelé lorsque je modifie son statut à partir du téléphone s??
source d'informationauteur Dan Dinu
Vous devez vous connecter pour publier un commentaire.
Il y a deux façons de l'enregistrement des récepteurs de radiodiffusion dans Android:
Permettez-moi d'expliquer les différences.
Cas 1 (Récepteur de Radiodiffusion inscrit dans le code)
Vous recevrez uniquement les émissions en tant que contexte où vous avez enregistré votre récepteur est vivant.
Alors, quand activité ou application est tué (selon l'endroit où vous avez enregistré votre récepteur) vous ne recevrez pas émissions plus.
Je suppose que vous vous êtes inscrit récepteur de radiodiffusion dans la contexte d'activité qui n'est pas très bonne.
Si vous souhaitez vous inscrire récepteur de radiodiffusion pour votre le contexte de l'application vous pouvez faire quelque chose comme ceci:
Cas 2 (Récepteur de Radiodiffusion inscrit dans AndroidManifest.xml)
Vous va recevoir les émissions même lorsque votre application est tué (système de veille à votre demande). C'est la bonne approche à laquelle vous souhaitez recevoir les émissions n'importe si votre application est de course.
Ajouter ce récepteur à votre AndroidManifest.xml:
EDIT:
Quelques émissions spéciales (c'est à dire SCREEN_ON ou SCREEN_OFF) doivent être inscrits dans le code (cas 1) sinon ils ne seront pas livrés à votre application.