3

我正在做一个项目,我必须显示帐户选择器,以便用户可以选择存储在其设备中的电子邮件帐户。问题是我得到了AccountPicker.newChooseAccountIntent已弃用的。

有没有其他方法可以显示帐户选择器,而不是手动获取电子邮件,并在自定义视图中显示它

现在我正在使用:

Intent googlePicker = AccountPicker.newChooseAccountIntent(null, null,
        new String[] { GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE }, true, null, null, null, null);
startActivityForResult(googlePicker, PICK_ACCOUNT_REQUEST);
4

4 回答 4

5

也许它会对某人有所帮助,在 2020 年根据文档使用它:

Intent intent =
 AccountPicker.newChooseAccountIntent(
     new AccountChooserOptions.Builder()
         .setAllowableAccountsTypes(Arrays.asList("com.google"))
         .build());

startActivityForResult(intent, SOME_REQUEST_CODE);

您也可以使用AccountManager

Intent intent;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
    intent = AccountManager.newChooseAccountIntent(null, null,
                        new String[] { GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE }, null, null, null, null);
} else {
    intent = AccountManager.newChooseAccountIntent(null, null,
                        new String[] { GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE }, false, null, null, null, null);
}

startActivityForResult(intent, SOME_REQUEST_CODE);

您可以从authAccount extra 获得选定的电子邮件:

protected void onActivityResult(final int requestCode, final int resultCode,
                                    final Intent data) {
        if (requestCode == REQUEST_CODE_EMAIL && resultCode == RESULT_OK) {
            String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
            // Do what you need with email 
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
于 2020-04-04T15:08:36.940 回答
1

根据开发人员的文档

现在不推荐将alwaysPromptForAccount布尔值添加为参数。newChooseAccountIntent新方法现在写成如下:

newChooseAccountIntent(Account, List, String[], String, String, String[], Bundle).

因此,现在就您而言,您的代码将如下所示:

Intent googlePicker = AccountPicker.newChooseAccountIntent(null, null,
new String[] { GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE }, null, null, null, null); 
startActivityForResult(googlePicker, PICK_ACCOUNT_REQUEST);
于 2018-07-11T08:12:54.253 回答
0

折旧并不意味着你不能使用它。谷歌会将代码保留在他们的 android 操作系统中,因为一些应用程序太古老了,它们仍然使用折旧的代码。

于 2016-06-09T10:01:28.300 回答
0

根据文件

通用帐户选择器类似于 ICS 中引入的标准框架帐户选择器:newChooseAccountIntent()。

因此,您可以使用AccountManager类中可用的newChooseAccountIntent()方法。它具有相同的输入和输出。

于 2016-08-07T05:42:48.280 回答