Как получить содержание для местоположения - PullRequest
1 голос
/ 10 ноября 2011

Я построил широковещательный приемник, который хочу получать о намерениях, когда у других приложений есть местоположение.Для меня ясно, что это так, чтобы я мог получать обновления местоположения, когда мое приложение не работает.Когда я получаю местоположение, я запускаю intentService для обновления моей базы данных.

Однако я не уверен, какой фильтр намерений использовать в манифесте?

Есть ли список фильтров намерений, которые я могу использовать?

1 Ответ

0 голосов
/ 10 ноября 2011

Одна вещь, которую вы можете сделать, это использовать метод LocationManager requestLocationUpdates () с ожидающим аргументом намерения . Если вы используете API версии 8 или более поздней, то поставщиком местоположения, который вы хотите использовать, является PASSIVE_PROVIDER, поэтому вы получаете обновления только тогда, когда другие действия обновляют их.

Вам не нужно использовать BroadcastReceiver в этой ситуации, так как PendingIntent вызывается при каждом изменении местоположения.

Подводя итог, вот как вы могли бы реализовать это

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    Intent intent = new Intent(this, PassiveLocationActivity.class);

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
            intent, 0);

    locationManager.requestLocationUpdates(
            LocationManager.PASSIVE_PROVIDER, 1000, 10.0f, pendingIntent);

и убедитесь, что вы добавили разрешение в свой манифест

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

ПРЕДУПРЕЖДЕНИЕ: выполнение подобных действий может очень обременительно для батареи. Убедитесь, что вы установили вменяемые значения для minTime и minDistance, и звоните locationManager.removeUpdates(pendingIntent);, когда вам больше не нужны обновления.

...