Android沒有對外公開結束通話的API,如果需要結束通話,必須使用AIDL與電話管理服務進行通信,並調用服務中的API實現結束通話,方法如下:
1> 從Android的源代碼中拷貝以下文件到項目中:
com.android.internal.telephony包下的ITelephony.aidl (對應 Android 版本源碼目錄下 \base\telephony\java\com\android\internal\telephony目錄下)
android.telephony包下的NeighboringCellInfo.aidl
注意:需要在項目中建立對應的包名存放上述兩個aidl文件,
2> 調用ITelephony.endCall()結束通話:
Method method = Class.forName("android.os.ServiceManager").getMethod("getService", String.class);
IBinder binder = (IBinder)method.invoke(null, new Object[]{TELEPHONY_SERVICE});
ITelephony telephony = ITelephony.Stub.asInterface(binder);
telephony.endCall();
3> 以上只是ITelephony 的用法之一。可應用於實現電話的黑名單功能 -- 監聽電話來電狀態,判斷其若是黑名單號碼,即用上面所示當時掛斷電話。
另外還有其它很多實用的方法,例如,其 call 方法可以直接撥打出電話,獲取電話呼叫狀態等方法,本人並沒有深入研究。
在清單文件AndroidManifest.xml中添加權限:
<uses-permission android:name="android.permission.CALL_PHONE" />
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11