2017-02-15 4 views
0

Ich arbeite mit der Google Kalender-API. Und ich habe Code von https://developers.google.com/google-apps/calendar/quickstart/android verwendet.Google-Konto Zugangsdaten ändern/abmelden

Es gibt so etwas wie GoogleAccountCredential und ich habe Account-Name für dieses Objekt mit Methoden: chooseAccount und OnActivityResult. Aber ich habe keine Ahnung, wie ich das Konto ändern könnte, nachdem ich es bereits in meiner Anwendung eingerichtet habe. Ich möchte, dass der Benutzer das Konto wechseln kann, wann immer er möchte, indem er auf die Schaltfläche klickt, um sich vom ausgewählten Konto abzumelden.

Ich habe neue Schaltfläche und versucht, dies in onClick Methode:

SharedPreferences settings = 
        getPreferences(Context.MODE_PRIVATE); 
      SharedPreferences.Editor editor = settings.edit(); 
      editor.putString(PREF_ACCOUNT_NAME, ""); 
      editor.apply(); 



      mCredential.setSelectedAccountName(null); 

Aber nach, auf die Schaltfläche klicken und versuchen Sie es erneut Kalender api zu nennen, ist es einfach aufhören.

Antwort

0

Haben Sie diese Funktionen irgendwo?

// [START signIn] 
private void signIn() { 
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
    startActivityForResult(signInIntent, RC_SIGN_IN); 

    //check if is a signout from other activity 
    if(getCallingActivity()!=null){ 
     signOut(); 
    } 
} 
// [END signIn] 

// [START signOut] 
private void signOut() { 
Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
     new ResultCallback<Status>() { 
      @Override 
      public void onResult(Status status) { 
       // [START_EXCLUDE] 
       updateUI(false); 
       // [END_EXCLUDE] 
      } 
     }); 
} 
// [END signOut] 

Ich nehme es aus Google-Dokumentation. Erstellen Sie eine Schaltfläche und versuchen Sie Folgendes:

@Override 
public void onClick(View v) { 
switch (v.getId()) { 
    case R.id.sign_in_button: 
     signIn(); 
     break; 
    case R.id.sign_out_button: 
     signOut(); 
     break; 
// case R.id.disconnect_button: 
//  revokeAccess(); 
//  break; 
} 
} 
+0

Ich benutze nicht Sing in meiner Anwendung. Es sieht wie folgt aus: 'private void getResultsFromApi() { if (! IsGooglePlayServicesAvailable()) { acquireGooglePlayServices(); } sonst if (mCredential.getSelectedAccountName() == null) { chooseAccount(); } sonst if (! IsDeviceOnline()) { mOutputText.setText ("Keine Netzwerkverbindung verfügbar."); } sonst { new MakeRequestTask (mCredential) .execute(); } } '' –

0

Ich fand eine Lösung. Ich habe dies in der onClick-Methode (für Logout-Button):

SharedPreferences settings = 
        getPreferences(Context.MODE_PRIVATE); 
      SharedPreferences.Editor editor = settings.edit(); 
      editor.putString(PREF_ACCOUNT_NAME, ""); 
      editor.apply(); 



      mCredential.setSelectedAccountName(""); 
      startActivityForResult(
        mCredential.newChooseAccountIntent(), 
        REQUEST_ACCOUNT_PICKER_CHANGE); 

und hier ist ein Teil von onActivityResult:

case REQUEST_ACCOUNT_PICKER_CHANGE: 
      if (resultCode == RESULT_OK && data != null && 
        data.getExtras() != null) { 
       String accountName = 
         data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME); 
       if (accountName != null) { 
        SharedPreferences settings = 
          getPreferences(Context.MODE_PRIVATE); 
        SharedPreferences.Editor editor = settings.edit(); 
        editor.putString(PREF_ACCOUNT_NAME, accountName); 
        editor.apply(); 
        mCredential.setSelectedAccountName(accountName); 
       } 
      } 
      break; 

Es scheint gut zu funktionieren, nach Klick Logout-Button Benutzer wieder nach wählen. Aber ich bin mir nicht sicher, ob es der beste Weg ist, den Account zu ändern. Irgendwelche anderen Ideen?

Verwandte Themen