Blackberry - launch the menu item from the Dialer Phone application

I would like to describe one trick I learned at supportforums.blackberry.com

BlackBerry has its own application for dialing a phone number.

The trick is to programmatically launch the dialer menu items after an incoming call, call rejection, or any other call event.

+3
source share
1 answer

There is a PhoneListener interface that allows you to listen to the status of incoming and outgoing phone calls.

Watch Listen and Handle Phone Events

supportforums.blackberry.com - Re: Ui (by simon_hain):

, . , .

, .
, Ui.getUiEngine(). GetActiveScreen() . .

:
- CallInitiated callConnected .
- phoneScreen.getMenu(0)

:
- "en"
- menu.getSize() menu.getItem(i)
- , menuItem.toString
- menuItem.run()
- ( )

:

Unmute

speeddiallist
( 4.5/4.6, , )
. :

, , - :

public class UseScreenMenu extends Application implements PhoneListener {
    String MENU_ITEM_MUTE = "Mute";
    String MENU_ITEM_UNMUTE = "Unmute";
    public UseScreenMenu() {
        Phone.addPhoneListener(this);
    }

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

    public void callIncoming(int callId) {
        printMenu();    
    }

    public void callAnswered(int callId) {
        runMenuItem(MENU_ITEM_MUTE);
    }

    public void callEndedByUser(int callId) {
        runMenuItem(MENU_ITEM_UNMUTE);  
    }

    private void printMenu() {      
        Screen screen = Ui.getUiEngine().getActiveScreen();
        Menu menu = screen.getMenu(0);
        System.out.println("Menu of BB Dialler - Begin");
        for (int i = 0, cnt = menu.getSize(); i < cnt; i++)
            System.out.println("Menu of BB Dialler - "
                +menu.getItem(i).toString());
        System.out.println("Menu of BB Dialler - End");     
    }

    private void runMenuItem(String menuItemText) {
        Screen screen = Ui.getUiEngine().getActiveScreen();
        Menu menu = screen.getMenu(0);
        for (int i = 0, cnt = menu.getSize(); i < cnt; i++)
            if(menu.getItem(i).toString().equalsIgnoreCase(menuItemText))
                menu.getItem(i).run();
    }


    public void callAdded(int callId) {}
    public void callConferenceCallEstablished(int callId) {}
    public void callConnected(int callId) {}
    public void callDirectConnectConnected(int callId) {}
    public void callDirectConnectDisconnected(int callId) {}
    public void callDisconnected(int callId) {}
    public void callFailed(int callId, int reason) {}
    public void callHeld(int callId) {}
    public void callInitiated(int callid) {}
    public void callRemoved(int callId) {}
    public void callResumed(int callId) {}
    public void callWaiting(int callid) {}
    public void conferenceCallDisconnected(int callId) {}
}
+4

Source: https://habr.com/ru/post/1719539/


All Articles