少しの運で答えを見つけました。
権限を追加する代わりに権限をMODIFY_PHONE_STATE
追加CALL_PHONE
という名前の新しいパッケージを作成します。com.android.internal.telephony
このパッケージ内に というファイルを作成しITelephony.aidl
、次の内容を追加します。
パッケージ com.android.internal.telephony;
interface ITelephony {
boolean endCall();
void answerRingingCall();
void silenceRinger();
}
通話をブロックするには、次のコードを使用します
try
{
TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
com.android.internal.telephony.ITelephony telephonyService = (ITelephony)m.invoke(tm);
//telephonyService.silenceRinger();
telephonyService.endCall();
}
catch (Exception e)
{
Log.d("BLOCK CALL", e.toString());
Toast.makeText(context, e.toString(), Toast.LENGTH_LONG).show();
}
これが他の人に役立つことを願っています。見つけるのは簡単ではありません。ただし、Google がこのようなことをいじらずにこれを行う機能を削除した理由はわかりません。