我打算编写与手机相关的测试,并直接编写SIM卡。
如果所需的api未在telephonymanager中公开,但在PhoneBase.java
、PhoneFactory.java
或CommandInterface.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();
}