【问题标题】:Using custom AccountAuthenticator with multiple applications将自定义 AccountAuthenticator 与多个应用程序一起使用
【发布时间】:2013-04-25 23:37:07
【问题描述】:

我有 2 个独立的 Android 项目,一个是 AbstractAccountAuthenticator 的实现,用于管理设备中的用户帐户,另一个是应该从 AccountAuthenticator 获取令牌并使用它的推送应用程序。

AbstractAccountAuthenticator 的实现正在工作并在从“设置”菜单中的“帐户和同步”部分调用它时添加帐户,但是当我从推送应用程序调用 addAccount() 时,我得到一个“权限被拒绝:checkComponentPermission() " 然后应用就死在那里了。

我无法提供太多源代码,因为我无权将其公开,但我向您保证,它们以“独立”的方式工作。

我已经从不同的应用程序中搜索了正确使用 AccountManager 的示例,但没有找到。在 freenode 上也没有运气。

我发现从 AccountAuthenticator 中启动活动(使用 Intent.FLAG_NEW_TASK 和 context.startActivity(intent))可以解决问题,但这意味着 addAccount() 不会返回到 AccountManager,我认为不符合开发指南,因为它破坏了 AccountManager 的使用流程。另一种方法是导出请求用户凭据时使用的 Acitivity。但我认为这可能是一个安全问题,因为它应该由 AccountManager 而不是外部调用。

感谢您对此提出的任何想法。

PS:

  • 所有权限都已正确使用,除非我需要一个我不知道的特殊权限才能跨应用程序工作。

  • 我会问是否可以使用代码片段在此处显示我关注的行。

  • 这里发布的第一个问题,我希望我没有违反(m)这里的任何规则(我在这里和谷歌上进行了搜索,但我问了,因为我没有发现任何用处。)

  • 谢谢。


在深入了解 Google 的登录服务并偶然发现设置类之后,我发现了我认为应该是解决方案:

  • 不要导出东西,我一直认为绕过 AccountManager 调用你的实现的某些东西是一个安全问题,是一个服务或一个活动。

  • 不要在您的AbstractAccountAuthenticator 实现中使用Intent.FLAG_NEW_TASKstartActivity(),因为这会导致您出现意外行为。

这样做的方法其实很简单:

Intent i = new Intent( Settings.ACTION_ADD_ACCOUNT );
i.putExtra( Settings.EXTRA_AUTHORITIES, new String[] { "com.exaple.yourauth" } );
contextVar.startActivity( i );

这样,您要求设置提高新帐户的可能权限列表,因为您要添加 EXTRA_AUTHORITIES 参数,这是一个带有权限的字符串以显示,它将选项限制为您想要的。如果只有一个与您的额外匹配,则以适当的方式调用帐户管理器和登录活动。

我真的希望这对周围的其他人有所帮助。

【问题讨论】:

    标签: java android accountmanager


    【解决方案1】:

    在深入了解 Google 的登录服务并偶然发现设置类之后,我发现了我认为应该是解决方案:

    • 不要导出东西,我一直认为绕过 AccountManager 调用你的实现的某些东西是一个安全问题,是一个服务或一个活动。

    • 不要在您的AbstractAccountAuthenticator 实现中使用Intent.FLAG_NEW_TASKstartActivity(),因为这会导致您出现意外行为。

    这样做的方法其实很简单:

    Intent i = new Intent( Settings.ACTION_ADD_ACCOUNT );
    i.putExtra( Settings.EXTRA_AUTHORITIES, new String[] { "com.exaple.yourauth" } );
    contextVar.startActivity( i );
    

    这样,您要求设置提高新帐户的可能权限列表,因为您添加了 EXTRA_AUTHORITIES 参数,这是一个带有权限的字符串来显示,它将选项限制为您想要的。如果只有一个与您的额外匹配,则以适当的方式调用帐户管理器和登录活动。

    我真的希望这对周围的其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多