>我正在做一个项目,我必须显示帐户选择器,以便用户可以选择存储在其设备中的电子邮件帐户。问题是我得到了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()方法。它具有相同的输入和输出。