我打算编写与手机相关的测试,并直接编写SIM卡。
如果所需的api未在telephonymanager中公开,但在PhoneBase.javaPhoneFactory.javaCommandInterface.java中以私有api的形式存在,那么有哪些替代方法?
具体来说,我的问题是:
什么是“替换”:PhoneFactory.getDefaultPhone()
访问CommandsInterface(例如:CommandsInterface mCmdIf = ((PhoneBase)mPhone).mCM)的替代方法是什么?
提前谢谢你,
米莎

最佳答案

您可以使用java reflection
下面是我如何访问com.android.internal.telephony.ITelephony类的方法来阻止传入呼叫…

private void endCall() throws Exception {
      TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

      Class<?> c = Class.forName(tm.getClass().getName());
      Method m = c.getDeclaredMethod("getITelephony");
      m.setAccessible(true);
      ITelephony telephonyService = (ITelephony) m.invoke(tm);

      telephonyService.silenceRinger();
      telephonyService.endCall();
      Toast.makeText(context, "Call Ended !", Toast.LENGTH_SHORT).show();
}

07-27 13:51