Android 8,android零基础开发

本文详细解析了Android 8.0中关于账户可见性和权限的管理,包括addAccountAuthTokenType、setAccountVisibility等接口的使用,强调了在Android 8.0中对用户隐私数据安全性的提升。通过源码分析,阐述了如何从IAccountManager到AccountManagerService进行账户信息的获取和权限控制。
摘要由CSDN通过智能技术生成

String addAccountAuthTokenType,

String[] addAccountRequiredFeatures,

Bundle addAccountOptions)

/**

  • 将某个帐号对特定包名可见性(允许/拒绝)

  • 只有和account的authenticator app签名一致才能调用此接口

*/

public boolean setAccountVisibility(Account account, String packageName, @AccountVisibility int visibility)

/**

  • 此外,android8.0还追加下面接口,与setAccountVisibility接口相同

  • 在登录成功,向AccountManager数据库中添加帐号时添加对特定包名的可见性

  • 名义上,只有authenticator app才可以调用此接口

*/

public boolean addAccountExplicitly(Account account, String password, Bundle extras, Map<String, Integer> visibility)

上述接口要么是用户来选择授权同意,要么是authenticator app给予授权,具体来说android 8.0更加加强了用户的隐私数据安全性

newChooseAccountIntent显示给用户的弹窗样式如下:

从源码的角度分析这几种解决方案


上面说了几种解决方案,为什么这几种方案会有效果呢?

下面让我们一起从源码的角度来解读。

@NonNull

public Account[] getAccountsByType(String type) {

return getAccountsByTypeAsUser(type, Process.myUserH

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

andle());

}

/** @hide Same as {@link #getAccountsByType(String)} but for a specific user. */

@NonNull

public Account[] getAccountsByTypeAsUser(String type, UserHandle userHandle) {

try {

return mService.getAccountsAsUser(type, userHandle.getIdentifier(),

mContext.getOpPackageName());

} catch (RemoteException e) {

throw e.rethrowFromSystemServer();

}

}

getAccountsByType 方法里面调用 getAccountsByTypeAsUser 方法,而在 getAccountsByTypeAsUser 方法里面,有调用 mService 的 getAccountsAsUser 方法。

那这个 mService 是什么东东呢?

private final IAccountManager mService;

可以看到其实是一个 AIDl,里面有若干方法

interface IAccountManager {

Account[] getAccounts(String accountType,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值