nsL*_*nsL 12 android location location-services
如果用户之前选择了"从不"选项,是否有任何方法可以再次为应用程序(或至少显示对话框)提供位置服务?

我在代码中找不到任何方法再次显示它,因为我总是在onResult(..)回调中得到LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
@Override
public void onResult(LocationSettingsResult locationSettingsResult) {
final Status status = locationSettingsResult.getStatus();
switch (status.getStatusCode()) {
case LocationSettingsStatusCodes.SUCCESS:
Log.i(TAG, "All location settings are satisfied.");
// startLocationUpdates();
break;
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
Log.i(TAG, "Location settings are not satisfied. Show the user a dialog to" +
"upgrade location settings ");
try {
// Show the dialog by calling startResolutionForResult(), and check the result
// in onActivityResult().
status.startResolutionForResult(activity, REQUEST_CHECK_SETTINGS);
} catch (IntentSender.SendIntentException e) {
Log.i(TAG, "PendingIntent unable to execute request.");
}
break;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
Log.i(TAG, "Location settings are inadequate, and cannot be fixed here. Dialog " +
"not created.");
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我找到的唯一解决方案是重新安装应用程序或清除数据.
Amr*_*ngh 27
我没有找到任何解决方法来启用位置服务,如果之前用户选择了" 从不 "选项,那么我按照@Lesvmac上面的回答再次要求用户删除并重新安装应用程序,但是我认为这不是正确的解决方法这个问题围绕着.
所以目前最好的方法是不允许"Never"选项出现在请求对话框中.尝试添加
builder.setAlwaysShow(true);
Run Code Online (Sandbox Code Playgroud)
到LocationSettingsRequest.Builder ,它只会产生" 是 "和" 否 "选项,而不是默认的" 从不 "," 是 "和" 不是现在 ",你将永远不会收到SETTINGS_CHANGE_UNAVAILABLE
这是完整的方法:
private void requestSettings() {
LocationSettingsRequest.Builder builder =
new LocationSettingsRequest.Builder()
.setAlwaysShow(true)
.addLocationRequest(request);
PendingResult<LocationSettingsResult> result =
LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient,
builder.build());
result.setResultCallback(this);
}
Run Code Online (Sandbox Code Playgroud)
后
| 归档时间: |
|
| 查看次数: |
3073 次 |
| 最近记录: |