语境:
假设我们安装了两个 Android 应用程序,A 包含自定义 Authenticator 代码并且可以将新帐户添加到 AccountManager,B 我们想要单点触控登录流程。您可以假设 A 尚未在 AccountManager 中创建该帐户。
问题:
从 B 的角度来看,使用 AccountManager 的 addAccount 方法有什么好处,该方法需要android.permission.MANAGE_ACCOUNTS
在 B 的 AndroidManifest 中声明而不是exporting the LoginActivity
从 A 应用程序中声明,并简单地通过意图调用它来为 B 创建该帐户。自然, A 已经声明了所有必需的权限。如果您认为后一种解决方案实际上更好(因为我们不需要再声明另一个权限),我也想知道您是否有一些有趣的事情要说来支持您的意见。
您可以假设我不需要使用权限保护 LoginActivity,尽管它已导出,因为它的唯一副作用是在 AccountManager 中创建帐户,这正是我们所需要的。
杂项:
为了提供更多背景信息,如果这有助于回答我的问题:
- 如果 A 未安装,B 会退回到自己的登录表单(但不充当身份验证者且不创建帐户,检索到的 OAuth 令牌仅供 B 使用)
- B 确实声明了 INTERNET 权限
- A 和 B 都使用相同的发布密钥进行签名
- A 和 B 不共享 android:sharedUserId