Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在另一个应用程序中使用addAccount优于导出LoginActivity的优势?_Android_Android Intent_Android Activity_Android Account - Fatal编程技术网

Android 在另一个应用程序中使用addAccount优于导出LoginActivity的优势?

Android 在另一个应用程序中使用addAccount优于导出LoginActivity的优势?,android,android-intent,android-activity,android-account,Android,Android Intent,Android Activity,Android Account,背景: 假设我们安装了两个安卓应用程序,一个包含自定义身份验证代码,可以向AccountManager添加新帐户,另一个我们希望有单触式登录流。您可以假定帐户尚未由A在AccountManager中创建 问题: 从B的角度来看,使用AccountManager的addAccount方法(需要在B的AndroidManifest中声明android.permission.MANAGE_帐户)比从A应用程序导出LoginActivity并通过intent简单调用它为B创建该帐户有什么好处。自然,A已

背景:

假设我们安装了两个安卓应用程序,一个包含自定义身份验证代码,可以向AccountManager添加新帐户,另一个我们希望有单触式登录流。您可以假定帐户尚未由A在AccountManager中创建

问题:

从B的角度来看,使用AccountManager的addAccount方法(需要在B的AndroidManifest中声明android.permission.MANAGE_帐户)比从A应用程序导出LoginActivity并通过intent简单调用它为B创建该帐户有什么好处。自然,A已声明所有必需的权限。如果您认为后一种解决方案实际上更好,因为我们不需要再次声明许可,我还想知道,您是否有一些有趣的话来支持您的观点

您可以假设我不需要使用权限保护LoginActivity,尽管它是导出的,因为它唯一的副作用是在AccountManager中创建帐户,这正是我们所需要的

杂项:

为了提供更多的上下文,如果这有助于回答我的问题:

如果未安装A,B返回到其自己的登录表单,但不充当身份验证程序,也不创建帐户,则检索到的OAuth令牌仅由B使用 B是否声明允许上网 A和B都使用相同的释放密钥签名 A和B不共享android:sharedUserId
一方面,拥有一个几乎没有权限的应用程序是个好主意;另一方面,使用第二个应用程序与互联网进行通信是一种欺骗

我想,如果你的AccountManager应用程序被卸载,你有一个计划是非常重要的。在这种情况下,您会遇到一个大问题,具体取决于您的授权流程

不过,使用,您可以查看是否同时安装了这两个应用程序


将另一个应用程序设置为可选是个好主意。如果两个应用程序都至少有互联网许可,就不会给人留下隐藏通信的印象。特殊权限的好处是其他应用程序无法使用您的公共API/意图。我不知道你的设计,也不知道这是否是个问题。但是,即使您使用单独的权限,恶意应用程序也可能会请求该权限。

嗨,雷克勒!谢谢你的反馈。这就是为什么我开始假设我们安装了两个Android应用程序。为了澄清,我编辑了我的问题,以包括B可以处理登录的信息,即使A根本没有安装。是的,我使用PackageManager来验证:我不知道你的设计,也不知道这是否是个问题。-这不是问题,因为A的LoginActivity只会创建帐户作为副作用,B仍然需要向AccountManager请求令牌,因此-任何调用导出活动的应用程序仍然需要GET_ACCOUNTS和USE_CREDENTIALS权限。在这种情况下,我看不到任何问题。酷,因此,导出LoginActivity似乎是一个可行的选择。谢谢你的意见,我会把这个问题留着,这样其他人可以插话:@karni如果回答了你的问题,你还是应该接受这个答案。其他人仍然可以回答。如果两个应用都具有完全授权功能,那么好处是什么?好处是,如果您使用A登录,您不必多次输入用户名和密码:此外,任何其他应用都可以利用AccountManager使用该帐户。这就是为什么B会要求A登录,而不是立即自行处理登录,即使它具有该功能,因为只有A可以在AccountManager中创建帐户。好处是单点登录两个应用程序,可能还有更多应用程序。我明白了。听起来是个好主意。