2016-05-15 4 views
1

Dans les docs here que je suis comment recevoir les demandes de localisation et deux choses inhabituelles, j'ai remarqué sont dans ces deux blocs de code:Que fait la classe LocationSettingsStates lors de la réception de demandes de localisation?

result.setResultCallback(new ResultCallback<LocationSettingsResult>() { 
    @Override 
    public void onResult(LocationSettingsResult result) { 
     final Status status = result.getStatus(); 
     final LocationSettingsStates = result.getLocationSettingsStates(); //<--This line I don't understand 
     switch (status.getStatusCode()) { 
      case LocationSettingsStatusCodes.SUCCESS: 
       // All location settings are satisfied. The client can initialize location 
       // requests here. 
       ... 
       break; 
      case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: 
       // Location settings are not satisfied. But could be fixed by showing the user 
       // a dialog. 
       try { 
        // Show the dialog by calling startResolutionForResult(), 
        // and check the result in onActivityResult(). 
        status.startResolutionForResult(
         OuterClass.this, 
         REQUEST_CHECK_SETTINGS); 
       } catch (SendIntentException e) { 
        // Ignore the error. 
       } 
       break; 
      case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: 
       // Location settings are not satisfied. However, we have no way to fix the 
       // settings so we won't show the dialog. 
       ... 
       break; 
     } 
    } 
}); 

Et dans le deuxième bloc:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    final LocationSettingsStates states = LocationSettingsStates.fromIntent(intent); //<--And this line 
    switch (requestCode) { 
     case REQUEST_CHECK_SETTINGS: 
      switch (resultCode) { 
       case Activity.RESULT_OK: 
        // All required changes were successfully made 
        ... 
        break; 
       case Activity.RESULT_CANCELED: 
        // The user was asked to change settings, but chose not to 
        ... 
        break; 
       default: 
        break; 
      } 
      break; 
    } 
} 

I J'ai ajouté des flèches pointant vers les lignes que je ne comprends pas. ces deux en particulier:

final LocationSettingsStates = result.getLocationSettingsStates();

final LocationSettingsStates states = LocationSettingsStates.fromIntent(intent);

La première ligne est quelque chose que je ne l'ai pas vu. Comment est-ce valable, en attribuant une valeur à un type de données? Alors cette classe n'est plus utilisée nulle part ailleurs dans ce bloc de code, alors quel est le but de la tâche?

Dans l'autre ligne, attribue maintenant une valeur à une instance appelée states de ce type de données, mais cette instance n'est utilisée nulle part ailleurs dans onActivityResult().

Alors, que se passe-t-il ici? Merci.

Répondre

0

La première ligne est définitivement une faute de frappe; il devrait être quelque chose comme:

final LocationSettingsStates states = result.getLocationSettingsStates(); 

Et oui, il est pas utilisé dans ces deux endroits, ce qui est bizarre, mais vous pouvez appeler things comme isBleUsable() sur elle pour déterminer ce qui est exactement présent et utilisable en ce moment. Dans le dernier cas, c'est ce qui est utilisable après la tentative de résolution.