4

Phone と Direct SIM の書き込みに関連するテストを作成するつもりです。

PhoneBase.java必要な API が TelephonyManager で公開されていないが、PhoneFactory.javaまたはでプライベート API として存在する場合の代替手段は何CommandInterface.javaですか?

具体的には、私の質問は次のとおりです。

  1. の「置換」とは: PhoneFactory.getDefaultPhone()?
  2. CommandsInterface(例: CommandsInterface mCmdIf = ((PhoneBase)mPhone).mCM)にアクセスするための代替手段は何ですか?

前もってありがとう、
ミカ

4

1 に答える 1

6

使用できます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();
}
于 2011-08-26T06:49:48.837 に答える