2017-06-20 59 views
1

我試圖斷開呼入來電,但面對這個錯誤如何終止內ITelephony

public interface ITelephony { 
    boolean endCall(); 
    void answerRingingCall(); 
    void silenceRinger(); 
} 
private void disconnectPhoneItelephony(Context context) 
{ 
    ITelephony telephonyService; 
    TelephonyManager telephony = (TelephonyManager) 
      context.getSystemService(Context.TELEPHONY_SERVICE); 
    try 
    { 
    telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
     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) 
    { 
     e.printStackTrace(); 
     Log.d("error", e.toString()); 
    } 
} 

錯誤:

(java.lang.ClassCastException:com.android.internal.telephony.ITelephony$Stub$ 
Proxy cannot be cast to belllab.com.meetingmanager.ITelephony) 
+0

檢查導入的文件包名稱和你的。 – RameshJaga

+0

打包名稱正確 – Hami

+0

看看您是否在項目中添加了ITelephony.AIDL文件?如果你已經添加,那麼你的包名必須包名稱必須是COM /安卓/內部/電話/ ITelephony.AIDL – RameshJaga

回答

0

如果您已在項目中添加ITelephony.AIDL文件?如果不是從here下載並將其添加到您的項目。

你要添加的文件這樣

enter image description here

然後還你的包名稱必須是COM /安卓/內部/電話/ ITelephony.AIDL:

檢查這個tutorial實現AIDL文件

+0

現在不能正常工作它在代碼中給它錯誤電話號碼 – Hami

+0

更新您實施的代碼以及日誌貓報告。所以我可以檢查。 – RameshJaga

+0

它給它錯誤的電話,無法解決變量 – Hami

0
telephonyService = (ITelephony) m.invoke(telephony); 

因爲m.invoke(telephony)不返回這是不可能的一個ITelephony的子類,也不ITelephony本身,所以你不能施放它。

正如你可以看到m.invoke(telephony)回報ITelephoneycom.android.internal.telephony包, 但你在belllab.com.meetingmanager包使用ITelephoney

+0

那麼我怎麼可以斷開來電 – Hami

+0

我已經使用堆棧溢出的代碼。是否有另一種方法來斷開來電 – Hami

+0

我認爲你在這裏使用兩個不同的類。 – creativecreatorormaybenot