Приложение для определения местоположения в фоновом режиме не работает на устройствах Samsung Android 8.0 - PullRequest
0 голосов
/ 16 октября 2018

У меня есть приложение для определения местоположения, которое работает в фоновом режиме.Чтобы управлять всем этим, я использую периодические сигналы тревоги, чтобы активировать процесс локализации.Проблема в том, что с момента последнего обновления SAMSUNG на этих устройствах перестала работать.Когда устройство заблокировано, эти сигналы перестают работать.Просто снова активировав экран, все работает правильно.Я пробовал несколько методов для управления аварийными сигналами, и последние тесты были проведены с setExactAndAllowWhileIdle метод

https://developer.android.com/reference/android/app/AlarmManager.html#setExactAndAllowWhileIdle(int,%20long,%20android.app.PendingIntent)

Но результат имеетбыл таким же.Такое поведение происходит со мной на устройствах Samsung с Android 8.0 .

Любая помощь или предложение будут приветствоваться.

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

1 Ответ

0 голосов
/ 16 октября 2018

Используйте приемник Broadcast, чтобы получить местоположение в версии 8.0 ... У меня есть тест, он работал для меня

 private PendingIntent getPendingIntent() {
        // Note: for apps targeting API level 25 ("Nougat") or lower, either
        // PendingIntent.getService() or PendingIntent.getBroadcast() may be used when requesting
        // location updates. For apps targeting API level O, only
        // PendingIntent.getBroadcast() should be used. This is due to the limits placed on services
        // started in the background in "O".

        // TODO(developer): uncomment to use PendingIntent.getService().
//        Intent intent = new Intent(this, LocationUpdatesIntentService.class);
//        intent.setAction(LocationUpdatesIntentService.ACTION_PROCESS_UPDATES);
//        return PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        Intent intent = new Intent(this, LocationUpdatesBroadcastReceiver.class);
        intent.setAction(LocationUpdatesBroadcastReceiver.ACTION_PROCESS_UPDATES);
        return PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    }

Ссылка: https://github.com/googlesamples/android-play-location/blob/master/LocationUpdatesPendingIntent/app/src/main/java/com/google/android/gms/location/sample/locationupdatespendingintent/MainActivity.java

Примечание: Некоторые устройства не работают, например, OPPO, Vivo, из-за соображений безопасности. В этом случае вам нужно перейти на Security permissions -> autostart ->, а затем включить автозапуск оттуда..

...