Android: Как получить информацию местоположения от поглощенных отдельно оплачиваемых предметов пакета при использовании LocationManager.requestLocationUpdates ()

Я пытаюсь использовать LocationManager requestLocationUpdates Android. Все работает, пока я не пытаюсь извлечь фактический объект местоположения это в моем бытовом радиоприемнике. Я должен конкретно определить "отдельно оплачиваемые предметы" к своему пользовательскому намерению так, чтобы Android LocationManager, прежде чем я передам его requestLocationUpdates, таким образом, это знает, как добавить его в намерение, или это создаст пакет отдельно оплачиваемых предметов независимо, когда это передаст запущенное намерение бытовому радиоприемнику?

Мой код похож на это:

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);

У меня есть бытовой радиоприемник, который определяется в манифесте как:

<receiver android:name=".LocationReceiver">
    <intent-filter>
        <action android:name="com.myapp.swarm.LOCATION_READY" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</receiver>

И класс бытового радиоприемника как:

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(); 
    }
}

Мой объект "местоположения" подходит пустой указатель.

20
задан Doughy 2 January 2010 в 07:12
поделиться

1 ответ

OK, мне удалось это исправить, изменив KEY_LOCATION_CHANGED в коде широковещательного приемника на значение:

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(android.location.LocationManager.KEY_LOCATION_CHANGED);

    Toast.makeText(context, loc.toString(), Toast.LENGTH_SHORT).show(); 
    }
}
20
ответ дан 30 November 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: