android telephony overview

 搞清phoneapp, telephonymanager, telephonyservice的关系

 
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
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章