J'essaie d'utiliser LocationManager requestLocationUpdates d'Android. Tout fonctionne jusqu'à ce que j'essaie d'extraire l'objet d'emplacement réel dans mon récepteur de diffusion. Ai-je besoin de définir spécifiquement les "extras" à mon intention personnalisée de sorte que l'Android LocationManager avant de le passer à requestLocationUpdates afin qu'il sache comment l'ajouter dans l'intention, ou va-t-il créer le extras-bundle indépendamment du passage intention au récepteur de diffusion?Android: Comment obtenir des informations de localisation à partir de suppléments de forfait d'intention lors de l'utilisation de LocationManager.requestLocationUpdates()
Mon code ressemble à ceci:
Intent intent = new Intent("com.myapp.swarm.LOCATION_READY");
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),
0, intent, 0);
//Register for broadcast intents
int minTime = 5000;
int minDistance = 0;
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime,
minDistance, pendingIntent);
J'ai un récepteur de radiodiffusion qui est défini dans le manifeste comme:
<receiver android:name=".LocationReceiver">
<intent-filter>
<action android:name="com.myapp.swarm.LOCATION_READY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
Et la classe de récepteur de radiodiffusion comme:
public class LocationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Do this when the system sends the intent
Bundle b = intent.getExtras();
Location loc = (Location)b.get("KEY_LOCATION_CHANGED");
Toast.makeText(context, loc.toString(), Toast.LENGTH_SHORT).show();
}
}
Mon objet "loc" arrive à zéro.
rappelez-vous de NULL CHECK - pas tous ces intentions contiennent des objets 'Location' –