ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 将自定义AccountAuthenticator与多个应用程序一起使用

2019-07-29 03:13:46  阅读:317  来源: 互联网

标签:accountmanager android java


我有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的登录服务并绊倒了Settings类之后,我发现了我认为应该是解决方案:

>不要导出东西,我一直认为调用你的实现,服务或活动,绕过AccountManager是一个安全问题.
>不要在AbstractAccountAuthenticator的实现上使用Intent.FLAG_NEW_TASK和startActivity(),因为它可能会导致意外行为.

实现这一点的方法非常简单,实际上:

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

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

我真的希望这可以帮助周围的任何人.

解决方法:

深入Google的登录服务并绊倒了Settings类之后,我发现了我认为应该是解决方案:

>不要导出东西,我一直认为调用你的实现,服务或活动,绕过AccountManager是一个安全问题.
>不要在AbstractAccountAuthenticator的实现上使用Intent.FLAG_NEW_TASK和startActivity(),因为它可能会导致意外行为.

实现这一点的方法非常简单,实际上:

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

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

我真的希望这可以帮助周围的任何人.

标签:accountmanager,android,java
来源: https://codeday.me/bug/20190729/1568422.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有