我使用最新版本的 Google Play 服务 (7.0) 并按照他们指南中给出的步骤操作,并启用了如下所示的位置对话框,该对话框有一个“从不”按钮。我的应用程序需要强制定位,所以我不想向用户显示“从不”,因为一旦用户点击“从不”,我就无法再次获取位置或请求位置。
谷歌地图只有“是”和“否”按钮,没有“从不”按钮,知道如何做到这一点吗?
我的应用程序的图像
谷歌地图的图片
原文由 Mufri A 发布,翻译遵循 CC BY-SA 4.0 许可协议
我使用最新版本的 Google Play 服务 (7.0) 并按照他们指南中给出的步骤操作,并启用了如下所示的位置对话框,该对话框有一个“从不”按钮。我的应用程序需要强制定位,所以我不想向用户显示“从不”,因为一旦用户点击“从不”,我就无法再次获取位置或请求位置。
谷歌地图只有“是”和“否”按钮,没有“从不”按钮,知道如何做到这一点吗?
我的应用程序的图像
谷歌地图的图片
原文由 Mufri A 发布,翻译遵循 CC BY-SA 4.0 许可协议
实施 ‘com.google.android.gms:play-services-location:18.0.0’
private SettingsClient mSettingsClient;
private LocationSettingsRequest mLocationSettingsRequest;
private static final int REQUEST_CHECK_SETTINGS = 214;
private static final int REQUEST_ENABLE_GPS = 516;
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(new LocationRequest().setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY));
builder.setAlwaysShow(true);
mLocationSettingsRequest = builder.build();
mSettingsClient = LocationServices.getSettingsClient(MainActivity.this);
mSettingsClient
.checkLocationSettings(mLocationSettingsRequest)
.addOnSuccessListener(new OnSuccessListener<LocationSettingsResponse>() {
@Override
public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
//Success Perform Task Here
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
int statusCode = ((ApiException) e).getStatusCode();
switch (statusCode) {
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
try {
ResolvableApiException rae = (ResolvableApiException) e;
rae.startResolutionForResult(MainActivity.this, REQUEST_CHECK_SETTINGS);
} catch (IntentSender.SendIntentException sie) {
Log.e("GPS","Unable to execute request.");
}
break;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
Log.e("GPS","Location settings are inadequate, and cannot be fixed here. Fix in Settings.");
}
}
})
.addOnCanceledListener(new OnCanceledListener() {
@Override
public void onCanceled() {
Log.e("GPS","checkLocationSettings -> onCanceled");
}
});
原文由 sarjeet singh 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.3k 阅读✓ 已解决
2 回答2.7k 阅读
2 回答1.8k 阅读
1 回答2.1k 阅读
1 回答1.2k 阅读
1 回答1.3k 阅读
1 回答601 阅读✓ 已解决
LocationSettingsRequest.Builder 有一个方法
setAlwaysShow(boolean show)
。虽然文档表明它目前什么都不做(2015 年 7 月 5 日更新:更新的 Google 文档已删除此措辞),但设置builder.setAlwaysShow(true);
将启用 Google 地图行为:这是使它工作的代码:
来自 Android 文档
对于 Kotlin,请参见此处: https ://stackoverflow.com/a/61868985/12478830