我正在挖掘 GitHub android app source code .
我正在尝试了解他们如何强制 LoginActivity
在应用程序首次启动时显示。
在他们的 list 中 they seem to have HomeActivity
as the MAIN和 LoginActivity
is only launched explicitly .
这意味着 HomeActivity
总是在应用首次打开时启动。但是,我在 HomeActivity 中看不到任何逻辑这表明他们检查帐户是否存在,如果不存在则转到 LoginActivity
在代码中LoginActivity
是only launched from here .
最佳答案
好的,整个 Android 帐户身份验证和同步适配器机制乍一看可能相当复杂,GitHub Android 应用程序在那里增加了另一层复杂性,但我会尝试向您解释整个流程(我希望我的理解是正确的)。
一开始,我会推荐你this article关于 Android Authenticator 如果您还不熟悉这个主题。 GitHub Android 使用与那篇文章中描述的完全相同的机制。
没错,HomeActivity
首先启动。然后它启动 OrganizationLoader加载组织列表。该加载器从 OrganizationService
调用方法,它是 GitHub Java API 的一部分.
GitHub Android 使用 RoboGuice
配置注入(inject)最常用的类,如 GitHub API 服务。可以看到ServicesModule中创建了OrganizationService .
它以 GithubClient
作为构造函数参数,还有一个 GitHubModule配置为返回 AccountClient当需要 GitHubClient
实例时。
AccountClient
覆盖 configureRequest()
方法并调用
String token = account.getAuthToken();
这是GitHubAccount的一个方法类,它从内部 Android 的 AccountManager
调用一个方法。 AccountManager
配置为使用 AccountAuthenticator你已经谈到了,如果设备上没有帐户,它会返回 LoginActivity
Intent 。
希望这有帮助:)
关于java - GitHub android app如何强制认证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20707154/