Получите FusedLocationProviderClient BroadcastReceiver для перезагрузки при завершении загрузки - PullRequest
0 голосов
/ 30 октября 2018

Мне удалось внедрить фоновые обновления местоположения, используя FusedLocationProviderClient PendingIntent и BroadcastReceiver в моем классе MainActivity, но при перезапуске телефона я не могу снова запустить его.

Я добавил

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

и

<receiver
   android:name=".LocationBroadcastReceiver"
   android:exported="true"
   android:enabled="true"
   android:permission="com.x.location.LOC_PERMISSION">
      <intent-filter>
          <action android:name="com.x.location.LocationUpdatesBroadcastReceiver.ACTION_UPDATE" />
          <action android:name="android.intent.action.BOOT_COMPLETED" />
      </intent-filter>
</receiver>

уже и с этим он вызвал мой LocationUpdatesBroadcastReceiver:

if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
    // Can see it coming through here then I
    // request location updates - see code below
}

но когда я снова пытаюсь запросить обновления местоположения, он просто ничего не делает. Это в значительной степени код, который я использовал для запроса обновлений местоположения снова:

private void requestLocationUpdates(Context context) {
    FusedLocationProviderClient fusedLocationClient = LocationServices.getFusedLocationProviderClient(context);

    LocationRequest request = new LocationRequest();
    long millis = 15 * 60 * 1000;
    request.setInterval(millis);
    request.setFastestInterval(millis);
    request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    request.setMaxWaitTime(millis);

    Intent intent = new Intent(context, LocationBroadcastReceiver.class);
    intent.setAction(LocationBroadcastReceiver.ACTION_DISTANCE_UPDATE);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    fusedLocationClient.requestLocationUpdates(request, pi);
   }

Я попробовал приведенный выше код как в LocationUpdatesBroadcastReceiver, так и в запуске службы, но все равно не повезло.

Также попытался изменить код запроса на другой номер, чтобы он не конфликтовал с первым, который я использовал внутри MainActivity, и / или также изменил флаг на PendingIntent.FLAG_CANCEL_CURRENT, но все тот же.

Заранее спасибо.

...