android - 如何访问未在 TelephonyManager 中公开的 Android 私有(private) API?

标签 android telephony telephonymanager

我打算编写与 Phone 和 Direct SIM write 相关的测试。

如果所需的 API 未在 TelephonyManager 中公开,但作为私有(private) API 存在于 PhoneBase.javaPhoneFactory.javaCommandInterface 中,有哪些替代方案.java?

具体来说,我的问题是:

  1. PhoneFactory.getDefaultPhone() 的“替代”是什么?
  2. 访问 CommandsInterface 的替代方法是什么(例如:CommandsInterface mCmdIf = ((PhoneBase)mPhone).mCM)?

提前致谢,
米迦

最佳答案

您可以使用java 反射

下面是我如何访问 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();
}

关于android - 如何访问未在 TelephonyManager 中公开的 Android 私有(private) API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2778740/

相关文章:

android - Android 中 com.android.internal.telephony.Call 类的 OEM/Google 实现

Android 4.4 SMS API - 无法更改平板电脑中的默认 SMS 应用程序

java - 如何知道我是否在 Android 上通话?

android - 如何在android上发送假电话广播

android - 如何将从system/bin/fb0提取的原始文件解析为android中的.png文件

android - 此“编辑文本”域代码有什么问题?

Android 接收到过多的蓝牙调试数据

android - 如何在微调器每个项目之间设置分隔符?

android - 从电话接收电话号码

android - 如何在电话管理器中查找拨出号码