2016-06-21 76 views
1

我遇到了一个奇怪的问题。Android checkLocationSettings从未在onResume中调用过

我与LocationServices的例子玩耍,我发现,如果我试图调用LocationServices.SettingsApi.checkLocationSettings在的onResume活动的,回调不会被调用。

我已经修改了应用程序启动时自动启动的定位的活动,并且该流程是:

  • 启动应用程序;
  • 启用(如果需要)本地化;
  • 把应用程序放在后台;
  • 禁用本地化服务;
  • 恢复应用程序。

在最后一步,我期待看到对话框中有一个启用本地化的请求,但这种情况从未发生过。

奇怪的是,当第一次启动应用程序时,它完美地工作。

有人遇到过这个?

编辑:

public synchronized void checkLocationSettings() { 
     PendingResult<LocationSettingsResult> result = 
       LocationServices.SettingsApi.checkLocationSettings(
         mGoogleApiClient, 
         mLocationSettingsRequest 
       ); 

     Log.e(TAG, "check"); 

     result.setResultCallback(this); 
    } 

ResultCallback:

@Override 
    public void onResult(LocationSettingsResult locationSettingsResult) { 

     final Status status = locationSettingsResult.getStatus(); 
     Log.e(TAG, status.toString()); 
     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 "); 
        showDialogToCheckSettings(status); 

       break; 
      case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: 
       Log.i(TAG, "Location settings are inadequate, and cannot be fixed here. Dialog " + 
         "not created."); 
       listener.impossibleToEnable(); 
       break; 
     } 
    } 

Log.e(TAG,status.toString())从未在的onResume

+0

请问您可以发布检查设置的代码 – Krutik

回答

1

叫我发现了问题。

该回调未被调用,因为我忘记了在onResume中调用mGoogleApiClient.connect()