我靠运气找到了答案。
而不是添加权限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();
}
希望这对其他人有帮助,它不太容易找到。我不明白为什么谷歌删除了这样做的能力而不像这样搞砸。