如何在Android 4.1.2 Nexus上以编程方式断开通话

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+以来就无法在 silenceRinger() 上运行,但是 endCall 可以正常工作。因此,解决方案是注释掉对 silenceRinger() 的调用。


这是正确的代码。你能发一下你的logcat错误吗? - Rahul Baradia
TechEnd,logcat中没有错误。在进行(未知号码)呼叫时,它应该断开连接,但这段代码在Android 2.2中有效,但在4.1中无效。 - AndroidRaji
1
最终我得到了2.6版本的解决方案。自从2.3+版本以来,MODIFY_PHONE_STATE权限在silenceRinger()上不再起作用,但对endCall没有影响。 因此,解决方案是将对silenceRinger()的调用注释掉。 - AndroidRaji
感谢 TechEnd。 - AndroidRaji
1个回答

2

自2.3版本以来, MODIFY_PHONE_STATE 在 silenceRinger() 上不再起作用,但 endCall 很好用。

因此,解决方案是注释掉对 silenceRinger() 的调用。

以下是一个简单的示例:

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

干杯


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接