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