android源码探索----多用户下phone进程问题

本文介绍了在Android多用户模式下,phone进程无法正常使用电话和短信的问题及解决过程。作者通过分析源码,逐步解决了创建进程、添加服务、连接RIL等方面的安全异常,实现了在多用户环境下打电话和发送短信的功能。
摘要由CSDN通过智能技术生成
 android4.2增加了多用户功能,终于在迟迟之后与 Linux保持了一致。但是手机上的多用户其实是相当鸡肋的,试想手机这种移动设备基本上就是每一个人的唯一id,所以基本上不存在多用户共用设备的情况。也正因为此以及专利的原因,所以电话上的多用户功能是关闭的,只有平板上的多用户是打开的。但还是要感谢谷歌开发人员引入多用户机制,这样可以帮助开发一些安全系统有极大帮助。

    但打开多用户之后,有一个比较蛋疼的地方是无法在多用户中打电话发短信。查看源码的知,这是Android对于电话通信这一块根本没有做多用户兼容性适配。只是在PhoneApp中简单粗暴的做了一个单用户判断if (UserHandle.myUserId() == UserInfo.ROOT_USER_ID ),在其它用户中根本无法使用电话和短信。而平板上又无这种通信需求,所以谷歌开发人员根本没在这块做代码适配。唉,无奈我们公司项目需要这方面的功能,即在多用户下也要能打电话发短信。所以只能硬这头皮上了,去做谷歌人员未竟的工作。这个过程是痛苦的前期后后后找了好几个phone方面比较熟悉的兄弟帮忙分析代码,加起来有快10天的工作量,终于初步满足了需求,能打电话发短信了。下面是将这一过程中遇到的问题,做个摘录以备忘。

   首先理解多用户原理,就算多用户到底是一个什么东西以及是一个什么样的实现机制。多用户固名思意,就是在同一台设备上隔离出另一个用户空间,这个空间里面运行的程序与普通空间运行的程序是隔离的,完全是在两个进程中,当然数据的存储,比如数据库也完全是独立的。最直观的感受就是,两个用户中装上同一个应用,那么这两个应用的导航页是需要走两遍的。当然这里面涉及到很多隔离,比如install,锁屏,某些设置等,所以在看4.2之后的源代码,会发现基本上所有的模块都涉及到多用户的判断,这说明android在加多用户这个功能的时候,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值