2017-02-15 9 views
0

Я работаю с API календаря Google. И я использовал код от https://developers.google.com/google-apps/calendar/quickstart/android.Учетная запись учетной записи учетной записи Google/logout

Есть что-то вроде GoogleAccountCredential, и я установил для этого объекта с помощью методов: chooseAccount и OnActivityResult. Но я понятия не имею, как изменить счет после того, как я уже установил его в своем приложении. Я хочу, чтобы пользователь позволял изменять учетную запись, когда захочет, нажав кнопку для выхода из выбранной учетной записи.

Я сделал новую кнопку и попробовал это в onClick метод:

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



      mCredential.setSelectedAccountName(null); 

Но после того, нажмите на кнопку и попытаться вызвать календарь апи снова, это просто остановить.

ответ

0

У вас есть эти функции где-то?

// [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] 

Я беру это из документации Google. Создайте кнопку, а затем попробуйте сделать следующее:

@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

Я не использую Sing in in my application. Это выглядит следующим образом: 'private void getResultsFromApi() { if (! IsGooglePlayServicesAvailable()) { приобретатьGooglePlayServices(); } else if (mCredential.getSelectedAccountName() == null) { chooseAccount(); } else if (! IsDeviceOnline()) { mOutputText.setText («Нет сетевого подключения.»); } else { новый MakeRequestTask (mCredential) .execute(); } } '' –

0

Я нашел решение. Я положил это в методе onClick (для кнопки выхода из системы):

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); 

и здесь является частью 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; 

кажется, работает хорошо, после того, как кнопка нажмите выход из системы пользователь может снова выбрать соотв. Но я не уверен, что это лучший способ изменить аккаунт. Любые другие идеи?

Смежные вопросы