当前位置: 首页 > 知识库问答 >
问题:

帐户管理器未来问题

宗政斌
2023-03-14

我想检索用户令牌。这是我的代码:

        AccountManager am = AccountManager.get(mActivity);

        AccountManagerFuture<Bundle> bundleAccountManagerFuture = am.getAuthTokenByFeatures(ACCOUNT_TYPE, AUTHORIZATION_TOKEN_TYPE, null, mActivity, null, null, null, null);

        try {
            Bundle result = bundleAccountManagerFuture.getResult(30, TimeUnit.SECONDS);

            if (result!=null) {
                OTTCache.getInstance().authToken = result.getString(AccountManager.KEY_AUTHTOKEN);
            }
        } catch (OperationCanceledException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (AuthenticatorException e) {
            e.printStackTrace();
        }

但该过程停止在以下行中:

Bundle result = bundleAccountManagerFuture.getResult();

一些想法?

非常感谢

例外情况:

android.accounts.OperationCanceleException W/System.err: at android.accounts.AccountManager$AmsTask.internalGetResult(帐户管理器.java:1985) W/System.err: at android.account.account.accountmanager$AmsTask.getResult(帐户管理器.java:1997) W/System.err: at android.account.accountmanager$AmsTask.getResult(帐户管理器.java:1995) W/System.err: at com.fr.apps.cliente.tv.task.LoginTask.doInBackground(登录任务.java:83) W/System.err: atcom.fr.apps.cliente.tv.task.LoginTask.doInBackground(登录任务.java:25) W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:304) W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237) W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(异步任务.java:243) W/System.err: at java.util.concurrent.ThreadPoolExcutor.runworker(ThreadPoolExecutor.java:1133) W/System.err: at java.util.concurrent.ThreadPoolExecutor.concurrent.运行(线程池检测器.java:607) W/System.err: at java.lang.Thread.run(线程.java:761)

共有3个答案

封瑞
2023-03-14

我发现了问题:

我的应用程序的程序包名称与我的其他应用程序的软件包名称不完全匹配(此应用程序具有登录名)。现在,我用同一个密钥签署了这两个文件。

敖毅
2023-03-14

摘自AccountManagerFuture的文档。getResult()方法-

此 * 调用将阻塞,直到结果可用。为了检查结果是否在没有阻塞的情况下可用,可以调用{@link #isDone()}和{@link #isCancelled()}。

编辑1:您可以使用getResult(longtimeout,TimeUnit unit),如果请求被阻止,它将在指定时间后超时。在此之后,您可以检查任务是否成功完成或未使用。isDone(),然后继续。

易祖鹤
2023-03-14

使用getResult()尝试对变量调用,代码会立即继续。我想你是想从服务器或其他什么地方检索它,而不是从存储在设备上的文件中检索?在那种情况下,你需要等待。isDone()(此处为android doc)在您处理结果之前变为true。

 类似资料:
  • 管理帐户数据 若要使用此机能,可能需先更新系统软件。 可确认或变更进入PlayStation®Network时建立的帐户数据。 仅能于已登入PlayStation®Network时操作。请进入(PlayStation®Netrowk)并选择(管理账户)。 可确认/变更的项目 账户管理 可确认/变更帐户数据。 信用卡数据 登入ID(电子邮件地址) 密码 姓名 地址 个人造型 个人资料 通知邮件设定

  • 这个问题是针对gmail商业/教育账户的。为了从gmail帐户读取电子邮件,我用c编写了一个dll,它执行IMAP命令,然后解析它们的响应。使用当前的IMAP实现,我需要使用每个用户的用户名和密码信息登录到每个用户的邮箱。所以我想知道gmail业务中是否有任何选项可以让我使用单个管理员用户凭据登录到域中的多个用户,而无需从域中的每个单独用户那里获取密码?

  • 我搜索了在请求中使用的onBehalfOfContentOwner字段,但我不知道如何获得这个ID,也不确定这是否适用于我的情况,因为我们讨论的是品牌帐户,如果我错了请纠正我。

  • 问题内容: 我需要能够从Go应用程序中管理Windows本地用户帐户,并且似乎没有使用CGo,就没有本机绑定。 我的最初搜索使人们说,最好使用“ exec.Command”运行“ net user”命令,但是在解析响应代码时,这似乎很混乱且不可靠。 我发现可以在netapi32.dll库中找到处理此类事件的函数,但是由于Go本身不支持Windows头文件,因此调用这些函数似乎并不容易。 以http

  • 问题内容: 我正在使用SQL Server2008。我对运行SQL Server代理作业时将使用哪个帐户感到困惑。我的困惑是, 我们可以从Windows服务管理控制台控制SQL Server代理作为Windows服务,从那里我们可以设置帐户以运行SQL Server代理(计算机中的LocalSystem); 我可以将SQL Server代理作业级别帐户设置为在其上运行吗? 是否可以在每个步骤中设置