Google帐户身份验证器会在运行时请求权限

时间:2011-04-02 14:41:53

标签: android permissions accountmanager

我使用来自我服务的AccountManager.getAuthToken来访问Googledocs和Spreadsheet API。

由于我是从后台进行的,并且不想中断用户,因此我允许accountManager在需要用户交互时发出通知(使用参数boolean notifyAuthFailure)。

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

  

“在这种情况下,您可能需要等待   直到用户响应,这可能   需要数小时或数天或永远。什么时候   用户确实响应并提供新的   密码,客户经理会   广播   LOGIN_ACCOUNTS_CHANGED_ACTION意图,   哪些应用程序可以用来尝试   再次“

当事情只是一个错误的密码时,它运作良好。但我遇到了一个问题,即AccountAuthenticator要求在运行时进行权限和意图(来自通知栏)启动GrantCredentialsPermissionActivity,在用户按下按钮(允许或拒绝)之后,不允许我知道用户已经响应。

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

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

我无法在清单前指定权限,因为据我所知,它是一些自定义权限,由谷歌身份验证器定义。

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

2 个答案:

答案 0 :(得分:0)

再次检查onResume即使权限活动是对话框也会被调用。你会得到的不仅仅是需要,而是过多的。

答案 1 :(得分:-1)

我认为了解用户互动何时完成的最佳方式是BroadCast一个事件并接收它。