Google帐户凭据更改帐户/注销

时间:2017-02-15 09:10:03

标签: java android google-app-engine

我正在使用Google Calendar API。我使用了来自https://developers.google.com/google-apps/calendar/quickstart/android的代码。

类似于GoogleAccountCredential,我使用以下方法为此对象设置帐户名称:chooseAccountOnActivityResult。但我不知道在我已经在我的应用程序中设置它之后如何更改帐户。我希望用户可以通过单击按钮从所选帐户注销来随时允许更改帐户。

我创建了新按钮并在onClick方法中尝试了这个:

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



            mCredential.setSelectedAccountName(null);

但之后,点击按钮,再次尝试拨打日历api,它就停止了。

1 个答案:

答案 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。但我不确定这是改变帐户的最佳方式。还有其他想法吗?