对于低于 23 的 API(API 21 和 22),位置不会返回任何内容

问题描述 投票:0回答:1

我的位置服务在 API >=23 上工作得很好,但对于 API 21 和 22 没有显示任何内容。这是我的位置方法(请注意,我正在使用片段):

/*if (!Permissions) { //location permission for APIs >=23
                Log.d("Location", "Unable to get user location");
                return;
            } */
                Log.d("Location", "User location requesting ... ");
                LocationServices.getFusedLocationProviderClient(fragment.requireActivity())
                        .requestLocationUpdates(requestLocation(), new LocationCallback() {
                            @Override
                            public void onLocationResult(@NonNull LocationResult locationResult) {
                                super.onLocationResult(locationResult);
                                Log.d("User location", Objects.requireNonNull(locationResult.getLastLocation()).toString());
                            }
                        }, null);
        });

这是我在上面使用的

requestLocation()
方法:

private static LocationRequest requestLocation() {
            return new LocationRequest.Builder(Priority.PRIORITY_HIGH_ACCURACY, 5000)
                    .setWaitForAccurateLocation(true)
                    .setMinUpdateIntervalMillis(2000)
                    .setMaxUpdateDelayMillis(100)
                    .setMaxUpdates(1)
                    .build();
        }

但这不适用于 API 21 和 22。我尝试在模拟器设置中手动设置位置,但同样没有任何反应。关于如何在 java 中获取这些 API 的用户位置,有什么建议吗?

我也尝试过使用“最后位置”方法,但没有帮助。

这里有一些与SO相关的帖子。

如何在 Android 中以编程方式获取当前 GPS 位置?

如何在Android中获取当前位置

java geolocation android-location android-gps
1个回答
0
投票

经过多方查找,终于找到了问题所在。 FusedLocationProviderClient 方法仅适用于安装了 GooglePlayStore 的系统。它与 API 级别 22 或 21 无关。

© www.soinside.com 2019 - 2024. All rights reserved.