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

标签 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,它就停止了。

最佳答案

我找到了解决方案。我将其放入 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/

相关文章:

python - 使用 Appengine 用 python 解码 JSON

java - 在 Java 中按交集后的特定属性对对象列表进行排序

java - 使用池连接管理器时,为什么我的 HTTPClient 连接耗尽?

java - 在 Lucene 6.5.0 中存储数值

java - Android:从字节数组或文件获取高度/宽度

android - UIL - ImageAware 被重新用于另一个图像。任务被取消

android - Visual Studio Team Services 中的签名和对齐 APK 步骤(原为 Visual Studio Online)

java - Google AppEngine - Java - Slim3 - 在新 View 中显示对象(从 key 检索)属性

用于强制转换的 Java 规则

python - App Engine 的云存储客户端库默认重试逻辑是什么?