Я пытаюсь работать с NETWORK и провайдером определения местоположения GPS одновременно. В основной деятельности я регистрирую запрос на обновление местоположения для каждого доступного поставщика:
for (String provider : m_lm.getProviders(false)) {
Intent intent = new Intent(GpsMain.this, GpsTestReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(GpsMain.this,0, intent, 0);
m_lm.requestLocationUpdates(provider, 60000, 10, pi);
}
В моем BroadcastReceiver (GpsTestReceiver) выполните входящие намерения:
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Bundle ex = intent.getExtras();
if (ex.containsKey(LocationManager.KEY_STATUS_CHANGED)) {
int status = (Integer)ex.get(LocationManager.KEY_STATUS_CHANGED);
String str_status;
switch (status) {
case 1:
str_status = "TEMPORARILY_UNAVAILABLE";
break;
case 2:
str_status = "AVAILABLE";
break;
default:
str_status = "OUT_OF_SERVICE";
break;
}
String provider_name = ???;
s = provider_name+": change status into "+str_status+"\n";
}
}
Вопрос: как определить, от какого провайдера поступило это намерение? (Строка имя_поставщика = ???;)
Я пытаюсь в момент регистрации включить имя провайдера намерения в качестве полезной нагрузки, например:
intent.putExtra("local.home.gpstest.PROVIDER", provider);
но безуспешно: входящие намерения от провайдера стирают мои данные ...