如何以编程方式断开android 4.1.2 nexus中的调用

时间:2012-11-05 10:47:48

标签: android telephonymanager nexus-s

我能够以编程方式断开呼叫,以便在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版本的解决方案。

自从2.3+以来,

MODIFY_PHONE_STATE权限不再适用于silenceRinger(),但endCall也没问题。因此,解决方案是将注释注释到silenceRinger()。

1 个答案:

答案 0 :(得分:2)

自2.3+以来,MODIFY_PHONE_STATE不再使用silenceRinger(),但是endCall就好了。

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

一个简单的例子:

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

干杯