我正在使用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,它就停止了。
答案 0 :(得分:1)
我找到了解决方案。我把它放在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。但我不确定这是改变帐户的最佳方式。还有其他想法吗?