Android - 用什么代替AccountPicker.newChooseAccountIntent,因为它已被弃用



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

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

现在我正在使用:

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

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

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

您也可以使用帐户管理器:

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);

您可以从身份验证帐户额外获取选定的电子邮件:

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);
    }

根据开发人员的文档:

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

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);

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

根据文档:

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

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

相关内容

  • 没有找到相关文章

最新更新