2012-04-02 53 views
0

我想停止传出呼叫并打开应用程序。该应用程序能够收听新的传出呼叫。现在我不知道如何停止通话并打开应用程序。任何帮助?黑莓 - 中断传出呼叫

回答

2

您不能暂停,但你可以做任何你想要当一个呼叫开始,通过下面的代码:

import net.rim.blackberry.api.phone.Phone; 
import net.rim.blackberry.api.phone.PhoneListener; 
import net.rim.device.api.system.Application; 
import net.rim.device.api.ui.component.Dialog; 

public class CallInterrupting extends Application implements PhoneListener { 

    public CallInterrupting() { 
     Phone.addPhoneListener(this); 
    } 

    public static void main(String[] args) { 
     new CallInterrupting().enterEventDispatcher(); 
    } 

    public void callAdded(int callId) { 
     // DO WHATEVER YOU WANT HERE 
    } 

    public void callAnswered(int callId) { 
     // DO WHATEVER YOU WANT HERE 
    } 

    public void callConferenceCallEstablished(int callId) { 
     // DO WHATEVER YOU WANT HERE 
    } 

    public void callConnected(int callId) { 
     // DO WHATEVER YOU WANT HERE 
    } 

    public void callDirectConnectConnected(int callId) { 
     // DO WHATEVER YOU WANT HERE 
    } 

    public void callDirectConnectDisconnected(int callId) { 
     // DO WHATEVER YOU WANT HERE 
    } 

    public void callDisconnected(int callId) { 
     // DO WHATEVER YOU WANT HERE 
    } 

    public void callEndedByUser(int callId) { 
     // DO WHATEVER YOU WANT HERE 
    } 

    public void callFailed(int callId, int reason) { 
     // DO WHATEVER YOU WANT HERE 
    } 

    public void callHeld(int callId) { 
     // DO WHATEVER YOU WANT HERE 
    } 

    public void callIncoming(int callId) { 
     // DO WHATEVER YOU WANT HERE 
    } 

    public void callInitiated(int callid) { 
     // A CALL IS INITIATED HERE, PUT YOUR CODE ! 
    } 

    public void callRemoved(int callId) { 
     // DO WHATEVER YOU WANT HERE 
    } 

    public void callResumed(int callId) { 
     // DO WHATEVER YOU WANT HERE 
    } 

    public void callWaiting(int callid) { 
     // DO WHATEVER YOU WANT HERE 
    } 

    public void conferenceCallDisconnected(int callId) { 
     // DO WHATEVER YOU WANT HERE 
    } 
} 

如果你的意思是完全取消/挂断电话,设置权限装置如下:

  1. 选项
  2. 高级选项
  3. 应用
  4. APP _NAME
  5. 编辑默认权限
  6. 互动
  7. 键行程喷油

然后调用所需逮住事件以下功能:

public void cancellingCall() 
    { 
     KeyEvent inject = new KeyEvent(KeyEvent.KEY_DOWN, Characters.ESCAPE, 0); 
     inject.post(); 
     // OPEN YOUR APP HERE 
    } 
+0

我试着在模拟器上面的代码。模拟器会显示一个对话框,其中包含“答案”,“失败”等选项,但呼叫不会断开。 – 2012-04-03 06:01:00

+0

您是否尝试通过上述步骤断言“按键注射”,然后通过cancellingCall(如答案中实现的)通过从上述事件中调用它来断言? – 2012-04-03 08:47:57

+0

谢谢。终于搞定了。对于打开应用程序,我在做UiApplication.getUiApplication()。pushScreen(new HelloBlackBerryScreen());但它转到背景(就像它打开然后消失)。 – 2012-04-03 12:42:08

1

试试这个代码,它工作正常,我。 在您的传出呼叫侦听器方法中,使用此代码断开呼叫,并在该代码打开您的应用程序之后。

public static void DisconnectCall() 
{ 


    UiApplication.getUiApplication().invokeLater(new Runnable() { 

     public void run() 
     { 
      try{ 
       final EventInjector.KeyCodeEvent pressEndKey = new EventInjector.KeyCodeEvent(
         KeyCodeEvent.KEY_DOWN, (char)Keypad.KEY_END, KeypadListener.STATUS_NOT_FROM_KEYPAD); 
       final EventInjector.KeyCodeEvent releaseEndKey = new EventInjector.KeyCodeEvent(
         KeyCodeEvent.KEY_UP, (char)Keypad.KEY_END, KeypadListener.STATUS_NOT_FROM_KEYPAD); 
       EventInjector.invokeEvent (pressEndKey); 
       Thread.sleep(100); 
       EventInjector.invokeEvent (releaseEndKey); 
       Thread.sleep(100); 
      }catch (Exception e) 
      { 
       e.printStackTrace(); 
      } 
     } 
    }); 


}