我可以在Android 2.2中编程地断开来电的未知号码。但是在Android 4.1中,这个功能不起作用。
在Android 2.2中断开来电的工作代码:
private Class c;
private Method m;
private com.android.internal.telephony.ITelephony telephonyService;
public void onReceive(Context context, Intent intent)
{
Bundle b = intent.getExtras();
String state = b.getString(TelephonyManager.EXTRA_STATE);
if(state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING))
{
TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
c = Class.forName(tm.getClass().getName());
m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
telephonyService = (ITelephony) m.invoke(tm);
telephonyService.silenceRinger();
telephonyService.endCall();
}
}
请帮忙,谢谢。
最终我找到了2.6版本的解决方法。
MODIFY_PHONE_STATE
权限自2.3+以来就无法在 silenceRinger() 上运行,但是 endCall 可以正常工作。因此,解决方案是注释掉对 silenceRinger() 的调用。