1

当我打电话给

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

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

如果没有设置帐户,则使用我添加新帐户的活动,这很好,但是如果有多个帐户,我会看到一个可供选择的帐户列表。我希望通过尚未创建的 AccountsListActivity 自定义此列表,以更接近地表示 Android 系统中内置的 Accounts & Sync 选项。

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

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

4

1 回答 1

3

我不太确定我的问题是否正确,但如果您只想实现从帐户列表中进行选择的可能性,您将有几个选项。

选项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;
}

注意: accounts 是获取到的账号列表。

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

选项 2

从 Android 4.0 开始,AccountManager 可以通过以下方式生成用于帐户选择的 Activity

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

也许我可以帮助你;)

于 2013-06-20T10:57:02.047 回答