搞清phoneapp, telephonymanager, telephonyservice的关系
android telephony overview
原创
©著作权归作者所有:来自51CTO博客作者meng_xx的原创作品,请联系作者获取转载授权,否则将追究法律责任
1 package com.android.phone; 是phone app,特权应用
2 package android.telephony是对SDK developer开放的,TelephonyManager, PhoneStateListener等类,功能很有限
3 package com.android.internal.telephony; 是Framework里的telephony, 不对SDK developer开放。其中包含:
一个非常清晰好用的ITelephony interface,
和另外一些CallManager, Phone, Call, Connection重要class,比较复杂难懂
理论上,phoneapp使用ITelephony (或者叫telephony service)的最标准方法是TelephonyManager,来完成call/endCall等操作,
由于安全考虑,call/endCall等方法都没有被TelephonyManager支持,
所以phoneapp必须直接调用framework内部的telephone service api ,由于phone app是在system(root?)权限下运行的"特权应用",这是可以做到的。
关于ITelephony接口,aidl方式,十分强大,方法清晰简单,call, dial, endCall等n多功能
com/android/internal/telephony/ITelephony.aidl
实现的类 PhoneInterfaceManager extends ITelephony.Stub
而PhoneInterfaceManager位于com.android.phone包里
也就是说,telephony service的实现在phone app里面...... 怎么会这样....
如何得到ITelephony, 基本答案是得不到
对于特权phone app,参考PhoneWindowManager.java的方式
1403 static ITelephony getTelephonyService() {
1404 ITelephony telephonyService = ITelephony.Stub.asInterface(
1405 ServiceManager.checkService(Context.TELEPHONY_SERVICE)); //为什么不是ServiceManager.getService("phone")?
1406 if (telephonyService == null) {
1407 Log.w(TAG, "Unable to find ITelephony interface.");
1408 }
1409 return telephonyService;
1410 }
反射的方式,相关文章很多,但2.3上不工作,主要是MODIFY_PHONE_STATE变成了system level permission, 第三方应用无法获得。
不错的参考文章:
http://hi.baidu.com/weiyousheng/blog/item/a7255ef4e2438c7dddc4748c.html
http://www.360doc.com/content/11/0222/11/474846_95043329.shtml
http://newfaction.net/2011/03/15/android-2-2-ril-java-part-of-the-code-profile.html
http://www.cnblogs.com/Tiger-Dog/articles/2056273.html
http://www.meegozu.com/thread-391-1-1.html
android 1.1的telephony相关文章,很老,结构已经发展了,但仍可以借鉴
http://www.kandroid.org/online-pdk/guide/telephony.html
http://www.linuxjournal.com/magazine/java-api-androids-telephony-stack
http://www.netmite.com/android/mydroid/development/pdk/docs/telephony.html
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Android Handler机制
Handler机制
ide 赋值 构造方法