2012-04-03 60 views
0

我已使用以下代碼以編程方式斷開呼叫,但它不起作用。如何以編程方式斷開撥出電話

private void callDisconnect(){ 
    try{ 
     TelephonyManager manager = (TelephonyManager)this.getSystemService(this.TELEPHONY_SERVICE); 
     Class c = Class.forName(manager.getClass().getName()); 
     Method m = c.getDeclaredMethod("getITelephony"); 
     m.setAccessible(true); 
     ITelephony telephony = (ITelephony)m.invoke(manager); 
     telephony.endcall(); 
    } catch(Exception e){ 
     Log.d("",e.getMessage()); 
    } 
} 

任何人都可以幫助我嗎?我是否需要更改代碼或其他...?

回答

0

使用你的代碼不能結束的Android 2.3 + ...這樣的一個電話......我想只有用戶可以結束他的電話......和更早版本You can see this linkThis one

0

嗯,你的問題需要還有一些R & D,但找到完美的解決方案相當困難。

希望此鏈接可能會有所幫助。 Link 1,Link 2,Stack Link

1

在更新版本的android中不再可能。用戶決定何時結束通話,如果它已經開始。但是,您可以阻止呼叫的發生。

5

要以編程方式斷開通話,您必須在項目中添加ITelephony.AIDL文件。如果已經添加了它,那麼你的包名稱必須是com/android/internal/telephony/ITelephony.AIDL:瞭解更多信息,請參閱Blocking Incoming call。從here下載AIDL文件。

要斷開ITelephony

4

的呼叫使用endCall();方法只需使用該廣播接收器。我在我的一個應用程序中測試了它,它完美地工作。

public class MyBroadcastReceiver extends BroadcastReceiver 
{ 

    @Override 
    public void onReceive(Context context, final Intent intent) 
    { 


     if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) 
     { 
      String phoneNumber = intent.getExtras().getString(Intent.EXTRA_PHONE_NUMBER); 

      if (phoneNumber.equals("123456")) 
      { 
       if (getResultData() != null) 
       { 

        setResultData(null); 
       } 


      } 

     } 


    } 

} 
+0

這個工作在5.0.2棒棒糖 – Sudara 2015-07-05 01:55:16