我在Kotlin中具有一项功能,可在应用程序中启用GPS。是否可以通过添加带有“不再询问”之类的参数的复选框来更改对话框,以避免在用户打开应用程序时始终打开GPS?
或者也许还有另一种解决方案,例如制作自定义对话框?
这里是代码:
private fun buildAlertMessageNoGps() {
val mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(2000)
.setFastestInterval(1000)
val settingsBuilder = LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequest)
.setAlwaysShow(true)
settingsBuilder.setAlwaysShow(true)
val result = LocationServices.getSettingsClient(this).checkLocationSettings(settingsBuilder.build())
result.addOnCompleteListener { task ->
try {
task.getResult(ApiException::class.java)
} catch (ex: ApiException) {
when (ex.statusCode) {
LocationSettingsStatusCodes.RESOLUTION_REQUIRED -> try {
val resolvableApiException = ex as ResolvableApiException
resolvableApiException.startResolutionForResult(this, 100)
} catch (e: IntentSender.SendIntentException) {
Toast.makeText(this,"PendingIntent unable to execute request.",Toast.LENGTH_SHORT).show()
}
LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE -> {
Toast.makeText(
this,
"Something is wrong in your GPS",
Toast.LENGTH_SHORT
).show()
}
}
}
}
}
[如果设备运行的是Android 6.0或更高版本,并且您应用的目标SDK为23或更高版本,则该应用必须在清单中列出权限,并在运行时请求这些权限。有关更多信息,请参见在运行时请求权限。
如果您的应用程序定位于Android 10(API级别29)或更高版本,并且在后台运行时需要访问设备位置,则还必须声明ACCESS_BACKGROUND_LOCATION权限。要了解更多信息,请参阅有关如何请求访问后台位置的部分。