Android AccountManager使用getAuthTokenByFeatures时,是否可以自定义返回帐户列



当我呼叫时

AccountManager.get(this).getAuthTokenByFeatures(Constants.ACCOUNT_TYPE, Constants.AUTHTOKEN_TYPE, null, this, null, null, 
                new AccountManagerCallback<Bundle>()

这是在我为AbstractAccountAuthenticator实现的重写addAccount方法中设置的

如果没有设置帐户,则使用我添加新帐户的活动,这很好,但如果有多个帐户,我会看到一个可以选择的帐户列表。我希望通过我尚未创建的AccountsListActivity来定制此列表,以更紧密地代表Accounts&安卓系统内置的同步选项。

是否可以设置一个活动来处理以相同方式返回帐户列表时发生的情况?我将如何做到这一点?我知道如何编写这个类,我只需要知道如何调用这个类,而不是简单的帐户名列表

如果没有,我还有什么选择?

我不太确定我是否答对了你的问题,但如果你只想实现从帐户列表中选择的可能性,你会有几个选项。

选项1

我选择的是一个简单的对话框弹出窗口,其中包含帐户。覆盖活动(用于获取帐户的活动)中的onCreateDialog,如下所示:

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DIALOG_ACCOUNTS:
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Title");
        final int size = accounts.length;
        String[] names = new String[size];
        for (int i = 0; i < size; i++) {
            names[i] = accounts[i].name;
        }
        builder.setItems(names, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // Stuff to do when the account is selected by the user
                handleSelectedAccount(accounts[which]);
            }
        });
        return builder.create();
    }
    return null;
}

注意:帐户是已获得帐户的列表。

要显示弹出窗口,只需调用:showDialog(DIALOG_ACCOUNTS)。

选项2

自Android 4.0以来,AccountManager可以通过生成用于帐户选择的活动

Intent intent = AccountManager.newChooseAccountIntent(null, null,
                new String[] { "com.google" }, false, null, null, null,
                null);

我在这里找到了这个解决方案:http://blog.tomtasche.at/2013/05/google-oauth-on-android-using.html

也许我可以帮你;)

相关内容

  • 没有找到相关文章

最新更新