我正在使用 Google Calendar API。我使用了 https://developers.google.com/google-apps/calendar/quickstart/android 中的代码.
有类似 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);
但是之后,点击按钮并再次尝试调用日历api,它就停止了。
最佳答案
我找到了解决方案。我将其放入 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;
看起来效果很好,单击注销按钮后用户可以再次选择 acc。但我不确定这是更改帐户的最佳方式。还有其他想法吗?
关于java - Google 帐户凭据更改帐户/注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42244990/