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

时间:2016-06-09 09:52:21

标签: android android-account

我正在开展一个项目,我必须在其中显示帐户选择器,以便用户可以选择存储在其设备中的电子邮件帐户。问题是我已经弃用了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 个答案:

答案 0 :(得分:2)

也许会对某人有所帮助,请在2020年根据docs使用此功能:

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 邮件中获取选定的电子邮件:

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

答案 1 :(得分:1)

根据developers' documentation

不建议将User u = new User(); Disposable disposable = RxUser.observe(u).subscribe((user) -> { // will be called for changes }); u.setFirstName("hello"); 布尔值添加为alwaysPromptForAccount的参数。现在,新方法编写如下:

newChooseAccountIntent

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

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

答案 2 :(得分:0)

根据documentation

  

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

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

答案 3 :(得分:-1)

折旧并不意味着您无法使用它。谷歌将把代码保存在他们的android操作系统中,因为有些应用程序非常古老,他们仍然使用折旧代码。