Dei*_*zan 14 android google-play-services
更新到Google Play Services v7.0 +,并在此示例中针对Android中的LocationUpdates,我有以下代码连接到LocationServices.SettingsApi并检查用户是否已准备好应用程序接收位置更新.
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(mLocationRequest);
mLocationSettingsRequest = builder.build();
PendingResult<LocationSettingsResult> result =
LocationServices.SettingsApi.checkLocationSettings(
mLocationClient,
mLocationSettingsRequest
);
result.setResultCallback(this);
Run Code Online (Sandbox Code Playgroud)
this以下回调在哪里:
@Override
public void onResult(LocationSettingsResult locationSettingsResult) {
final Status status = locationSettingsResult.getStatus();
Intent resolutionIntent;
switch (status.getStatusCode()) {
case LocationSettingsStatusCodes.SUCCESS:
// Everything is OK, starting request location updates
break;
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
// Seems the user need to change setting to enable locations updates, call startResolutionForResult(Activity, REQUEST_CODE)
break;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
// Error, cannot retrieve location updates.
break;
}
}
Run Code Online (Sandbox Code Playgroud)
在SUCCESS就OK重现,只是不停GPS功能的.
该RESOLUTION_REQUIRED还行重现,只禁用GPS.
这SETTINGS_CHANGE_UNAVAILABLE是交易:如果用户在RESOLUTION_REQUIRED执行步骤时选择"NEVER" ,结果将始终以此状态出现.
当用户选择"从不"选项时,Google Play服务是否可以选择以编程方式重置该标志?
我知道"从来没有"似乎是" 真的,不要再问我了!!! ",但我想创建一个选项,以防用户改变主意,当然,如果这是可能的.
在这种情况下,我将能够RESOLUTION_REQUIRED再次收到状态,并要求用户在下次执行应用程序时接受LocationUpdates.
Mat*_*ini 33
LocationSettingsRequest.Builder有一个方法setAlwaysShow,它可以改变对话框的按钮:
始终显示对话框,没有"从不"选项以禁止此应用程序的未来对话框.当此标志设置为true时,即使用户之前选择了"从不",该对话框也会显示位置设置是否不满足请求.注意:仅当对话框是由用户启动的显式操作(需要执行位置)的结果时才使用此方法.取消此对话框也应取消已启动的操作.
相反,默认是,不是现在和从不按钮,如果你打电话给setAlwaysShow(true);你将只有是和否,所以用户不会选择从不,你永远不会收到SETTINGS_CHANGE_UNAVAILABLE
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(mLocationRequest);
builder.setAlwaysShow(true);
mLocationSettingsRequest = builder.build();
PendingResult<LocationSettingsResult> result =
LocationServices.SettingsApi.checkLocationSettings(
mLocationClient,
mLocationSettingsRequest
);
result.setResultCallback(this);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4420 次 |
| 最近记录: |