我正在嘗試開發類似於AutoAnswer的東西,但它也會在通知廣播接收器時自動掛斷。我已經花了整整一天閱讀關於這個問題的其他stackoverflow問題,似乎許可MODIFY_PHONE_STATE
僅限於系統應用程序,但是,一些職位表示,使用endCall();不需要此權限。有沒有什麼辦法可以在Android 2.3後結束通話?
我的問題有兩個部分:
- 是
endCall()
仍然可用?自從Android 2.3以來它有沒有在任何情況下使用過? - 如果是這樣,我需要幫助使它工作,因爲現在它不工作。我從http://code.google.com/p/autoanswer/source/browse/trunk/src/com/#com/android/internal/telephony 下載
ITelephony.aidl
並將其放入包裝中。我是新用戶,因此我無法發佈圖片。
這是我的文件樹看起來像在NetBeans:
而且這是在我的廣播接收器運行的代碼多數民衆贊成。它之前已經張貼在這裏多次作爲解決這個問題但我仍然不能得到它的工作:/
ITelephony telephonyService;
TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Class c = Class.forName(telephony.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
telephonyService = (ITelephony) m.invoke(telephony);
telephonyService.endCall();
}
catch (Exception e) {
//TODO: some exception handling
}
通過日誌看,我看到這個錯誤:
[PhoneIntfMgr] CMD_END_CALL: no call to hang up
編輯:我是全新的android開發,似乎無法找到android應用程序的控制檯輸出 - 例如調用e.printStackTrace(),但我確實有Toast在catch塊中顯示一些文本,如下所示:
catch (Exception e) {
Toast toast = Toast.makeText(context, "IN CATCH BLOCK ", Toast.LENGTH_LONG);
toast.show();
e.printStackTrace();
}
但沒有顯示在屏幕上..
隨着代碼的狀態,您無法判斷是否拋出了異常。也許開始你應該添加一些調試輸出到你的catch塊。 – Paulpro
希望它有助於.. http://stackoverflow.com/questions/10860369/fetch-dial-number-while-calling –
首先了解logcat。然後想想爲什麼你想把用戶的手機掛在他們身上 - 這很少是合適的事情。 –