6

我可以在 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+ 起,权限不再适用于 quietRinger(),但 endCall 就可以了。所以解决方案是注释掉对silenceRinger() 的调用。

4

1 回答 1

2

自 2.3+ 起,MODIFY_PHONE_STATE 不再在silenceRinger() 上工作,但 endCall 就好了。

所以解决方案是注释掉对silenceRinger() 的调用。

还有一个简单的例子:

 http://androidbridge.blogspot.ro/2011/05/how-to-answer-incoming-call-in-android.html

干杯

于 2013-06-11T07:53:01.867 回答