3

我使用我的服务中的 AccountManager.getAuthToken 来访问 Googledocs 和电子表格 API。

由于我是从后台执行此操作并且不想打扰 user ,因此我允许 accountManager 在需要用户交互时发出通知(使用参数 boolean notifyAuthFailure)。

正如我所料,CallBack 是用 AccounManagerFuture 调用的,在这种情况下它解析为 Bundle with KEY_INTENT 字段。

“在这种情况下,您可能需要等到用户响应,这可能需要数小时或数天甚至永远。当用户确实响应并提供新密码时,帐户管理员将广播 LOGIN_ACCOUNTS_CHANGED_ACTION Intent,应用程序可以使用它来尝试再次”

当事情只是密码错误时,它运作良好。但是我遇到了一个问题,AccountAuthenticator 在运行时请求许可,并且意图(从通知栏)启动 GrantCredentialsPermissionActivity,在用户按下按钮(允许或拒绝)后不允许我知道用户已经响应。

问题是如何知道与用户的交互何时完成并再次尝试获取 AuthToken。

我无法从 GrantCredentialsPermissionActivity 获得 onActivityResult,因为我从 NotificationBar 启动它(不是从我的其他活动,因为我在尝试获取令牌时使用服务)

我不能事先在清单中指定权限,因为据我了解,这是一些由谷歌身份验证器定义的客户权限。

当用户在关闭 GrantCredentialsPermissionActivity 后在运行时批准/拒绝请求的应用程序权限时,它似乎没有广播任何意图。谢谢你。

4

2 回答 2

0

只需再次检查 onResume,即使权限活动是一个对话框,它也会被调用。你的要求会超出需要,但不会过分。

于 2013-01-16T19:11:01.040 回答
-1

我认为了解用户交互何时完成的最好方法是广播一个事件并接收它。

于 2011-07-14T13:07:03.587 回答