后台位置应用在三星Android 8.0设备中不起作用

时间:2018-10-16 10:25:32

标签: android geolocation location alarmmanager samsung-mobile

我有一个在后台运行的定位应用程序。为了管理所有这些,我使用定期警报来激活本地化过程。问题是,由于 SAMSUNG的最新更新 已停止在这些设备上运行。当设备锁定时,这些警报将停止工作。只需再次激活屏幕,一切就可以正常工作。我尝试了几种管理警报的方法,最近的测试已使用 setExactAndAllowWhileIdle 方法

完成

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

但是结果是一样的。在装有Android 8.0的 Samsung设备上 ,我会发生这种情况。

任何帮助或建议都将受到欢迎。

提前谢谢

1 个答案:

答案 0 :(得分:2)

使用广播接收器获取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->然后从那里启用自动启动。