我正在尝试断开来电,但面临此错误
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 :(得分:0)
telephonyService = (ITelephony) m.invoke(telephony);
这是不可能的,因为m.invoke(telephony)
本身不会返回ITelephony
或ITelephony
的子类,因此您无法投射它。
您可以看到m.invoke(telephony)
在ITelephoney
包中返回com.android.internal.telephony
,
但您在ITelephoney
包中使用belllab.com.meetingmanager
。
答案 1 :(得分:0)