- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
到目前为止受影响的设备:
使用:为了请求位置更新,我检查了位置设置事先是足够的。如果没有,我会显示一个小文本,表示服务必须为我的功能启用。如果用户点击它,系统对话框启用将提示定位服务。
我如何进行检查:我通过 LocationSettingsRequest
和 LocationServices
运行检查,并且处理 ResolvableApiException
。如果服务被用户禁用,然后在我所有的设备上,这将显示系统对话框,要求用户启用服务(并启用它,如果单击确定)。
在 Redmi 上发生了什么:但无论出于何种原因,在 Xiamoi Redmi Note 7 上,checkLocationSettings
将总是返回一个ResolvableApiException
,即使服务已经启用。对话框不会出现,直接返回肯定结果(当然,因为该服务已启用)。因此,用户会卡住并永远点击“启用”。
有人知道为什么 LocationSettingsRequest
不工作吗正确地安装在这些设备上并知道如何修复它?
示例代码 fragment
void enableLocationSettings(onLocationServiceRequiredCallback: ICallback) {
LocationRequest locationRequest = LocationRequest.create()
.setInterval(LOCATION_UPDATE_INTERVAL)
.setExpirationDuration(LOCATION_UPDATE_EXPIRATION_DURATION)
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
.addLocationRequest(locationRequest);
LocationServices
.getSettingsClient(this)
.checkLocationSettings(builder.build())
.addOnSuccessListener(this, (LocationSettingsResponse response) -> {
// update location as usual
})
.addOnFailureListener(this, error -> {
if (error instanceOf ApiException) {
int statusCode = error.statusCode;
if(statusCode == LocationSettingsStatusCodes.RESOLUTION_REQUIRED) {
if(error instanceOf ResolvableApiException) {
PendingIntent resolution = error.resolution
// This will trigger the system dialog, see below
onLocationServiceRequiredCallback(resolution);
}
}
}
// error callback
});
不幸的是,回调代码现在将是 kotlin。对不起。我只能发布“示例代码 fragment ”,因为这是与工作相关的。
它使用 ActivityResultContracts.StartIntentSenderForResult
开始系统对话框。
resolution
是上面的 PendingIntent。
契约(Contract):
private val locationServiceContract = registerForActivityResult(
ActivityResultContracts.StartIntentSenderForResult()
) { activityResult ->
lifecycleScope.launchWhenResumed {
val result = if (activityResult.resultCode == Activity.RESULT_OK) {
// This will retrigger the location fetch (looping)
enableLocationSettings(...)
} else {
// Do nothing
}
}
}
调用上面的回调后,将执行:
locationServiceContract.launch(
IntentSenderRequest.Builder(
resolution
).build()
)
LocationSettingsStates
的转储,使用已弃用的 LocationSettings API(使用 GoogleApiClient)获取:
isGpsPresent: true,
isGpsUsable: false,
isLocationPresent: true,
isLocationUsable: true,
isNetworkLocationPresent: true,
isNetworkLocationUsable: true
最佳答案
您好,我使用不同的代码来检查设备上是否启用了 GPS。也许值得您尝试一下,看看它是否能解决您的问题。
private boolean isLocationEnabled(Context context) {
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
return LocationManagerCompat.isLocationEnabled(locationManager);
}
然后我使用对话框将用户发送到设置
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
context.startActivity(intent);
我打赌你也在做同样的事情。在发送用户启用 GPS 后,您可以在恢复时再次运行该方法
如果有帮助请告诉我
关于Android LocationServices.checkLocationSettings 假阴性结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69649666/
当位置可用时,我想返回当前的用户位置。 这是我的代码: fusedLocationClient = LocationServices.getFusedLocationProviderClient(th
我正在尝试创建一个 GPSTracker 类,我可以从一个 fragment 运行它来获取用户的 GPS 位置。我有一个运行良好,除了它需要愚蠢的棉花糖许可支持(我知道这并不愚蠢,我实际上喜欢它,但它
我正在尝试使用使用用户位置的 android studio 构建一个 android 应用程序。我正在尝试导入 google play services LocationServices api,但它
到目前为止受影响的设备: Xperia 1 II 小米红米 Note 7 使用:为了请求位置更新,我检查了位置设置事先是足够的。如果没有,我会显示一个小文本,表示服务必须为我的功能启用。如果用户点击它
我正在尝试使用以下代码获取我的 Android 应用程序的纬度和经度。 public class MainActivity extends AppCompatActivity { privat
我的代码是: if (mGoogleApiClient == null && checkGooglePlayService()) { Log.d(Utils.TAG_DEV + TAG
有人知道使用 LocationServices.GeofencingApi 的示例吗?我发现的所有 android 地理围栏示例都使用已弃用的 LocationClient 类。据我所知,可以使用 L
我正在尝试获取用户最后已知的位置。 连接 Google API 后,我调用我的函数: @Override public void onConnected(Bundle bundle) { in
我似乎做不到GoogleApiClient从事我的项目。我正在使用 LocationServices , OnConnected即使我有 client.connect() 也没有开火在 onStart
我没有使用 LocationManager,而是使用 LocationServices 方法来获取当前的 gps 位置和位置更新。 这是代码: public void onConnected(@Nul
我正在尝试使用 GoogleAPIClient 获取实时位置更新。虽然 GoogleAPIClient 已连接但位置对象为空,并且它提示 location.getProvider() 为空。有人可以帮
我正在 Visual Studio 2017 上使用 Xamarin 创建一个 Android 应用程序。我正在尝试使用本指南(http://www.c-sharpcorner.com/blogs/f
我想实现自己的定位服务。它将基于附近接入点的 wifi 信号强度的三角测量。 我知道确定我的位置的算法,但我不知道如何将它集成到我的代码中以便我可以简单地向我的服务添加一个 LocationListe
我只是想做一个简单的“教程”应用程序来获取我手机的位置(以了解稍后如何在其他应用程序中使用它),但我就是一无所获。 我做了什么 Android 开发人员教程: 首先,我遵循了 Android 开发人员
我不明白为什么 LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest,
我正在 Android 上使用 Google Play 服务位置 API,我正在尝试弄清楚如何测试 onConnectionSuspended(int Cause) 回调,该回调是 GoogleApi
我正在开发一个 Android 库,我需要删除由使用我的库的开发人员添加的播放服务依赖项。我需要用户位置最后一个位置,所以我需要使用反射,因为位置库不会直接包含在我的库中。 但是如何通过反射从构建器创
你好 Stackoverflow 社区,我是 android 的新手,正在学习如何实现基于位置的服务。 我成功地实现了一个速度计应用程序,它可以测量当前速度、总距离和总行驶时间。 现在我想添加一个额外
我已经在其他线程中阅读了该问题的解决方案,但我似乎不明白为什么它会返回 null。我使用了谷歌开发者网站提供的相同 fragment :https://developer.android.com/tr
我有一个高优先级的项目正在开发中。 我正在尝试将地理位置插入数据库,因此我找到了在线服务,不幸的是 LocationRequest 和 LocationServices.API 未解析。 我正在使用依
我是一名优秀的程序员,十分优秀!