Сделайте телефонный звонок из приложения, когда пользователь нажмет кнопку вызова (переопределить поведение по умолчанию) - PullRequest
1 голос
/ 21 января 2011

В моем приложении есть поле со списком контактов. Я хотел бы позвонить выбранному контакту, когда пользователь нажимает зеленую кнопку вызова (вместо поведения по умолчанию, при котором запускается приложение журнала телефонных звонков).

Это означает, что есть 2 проблемы: 1) можно ли перехватить зеленую кнопку вызова? 2) как мне сделать звонок из приложения?

Ответы [ 2 ]

4 голосов
/ 06 июня 2011

Прежде чем ответить на вопрос, предполагается, что вы отслеживаете выбранный в данный момент элемент в списке и у вас есть способ найти соответствующий номер телефона.

1) Перехватить кнопку вызова
Вам необходимо реализовать метод keyDown(int, int) в диспетчере или на экране, поймать правильный код ключа и вернуть true:

protected boolean keyDown(int keycode, int time)
{
    // check for the green phone button
    if (keycode == 1114112)
    {
        /* 
         * Place your custom calling code here.
         */

        return true; // indicates that this method has consumed the keypress
    }
    else
    {
        return super.keyDown(keycode, time);
    }
}

(на основании ответа, данного на http://supportforums.blackberry.com/t5/Java-Development/Can-Over-ride-Call-Button-using-api-Issue-Shows-Context-Menu-on/m-p/252554/highlight/true#M41073)

2) Позвонить по телефону
Вам нужно Invoke() приложить телефон, передав ему номер телефона, по которому вы хотите позвонить:

    PhoneArguments callArgs = new PhoneArguments(
        PhoneArguments.ARG_CALL, "+27 83 111 1234");
    Invoke.invokeApplication(Invoke.APP_TYPE_PHONE, callArgs);


Таким образом, объединение дает этот код:
protected boolean keyDown(int keycode, int time)
{
    // check for the green phone button
    if (keycode == 1114112)
    {
        // get phone number - you must write this yourself
        String number = selectedContact.getNumber();  // assume some method here depending on your solution

        // make the call
        PhoneArguments callArgs = new PhoneArguments(
            PhoneArguments.ARG_CALL, number);
        Invoke.invokeApplication(Invoke.APP_TYPE_PHONE, callArgs);

        // indicate that the key has been processed
        return true;
    }
    else
    {
        return super.keyDown(keycode, time);
    }
}
1 голос
/ 28 января 2011

Из документации Blackberry:

net.rim.blackberry.api.phone

public final class Телефон расширяет Object

Этот класс обеспечивает следующее:

* Advanced utilities for interaction with the Phone

заявка.Вы можете использовать методы в этом классе для более точного управления приложением Phone.Например, добавление тонов DTMF в активные вызовы.* Доступ к нескольким строкам на устройстве.* Добавление данных на экраны входящих и активных вызовов, если они поддерживаются.

Примеры из нескольких строк

Пример A: Переключение строки

  1. Создание класса, расширяющего MultiLineListener.

    открытый класс MultiLineActionextends MultiLineListener

  2. Зарегистрируйте класс как PhoneListener.

    Phone.addPhoneListener (this);

  3. Реализация обратных вызовов MultiLineListenerчтобы приложение могло получать уведомления о результатах переключения.

    public void setPreferredLineFailure (int lineId) {_screen.popupMessage ("Переключение не выполнено");} public void setPreferredLineSuccess (int lineId) {_screen.popupMessage («Переключение на» + Phone.getLineNumber (lineId) + «завершено»);}

  4. Вызов Phone.setPreferredLine ().

    Phone.setPreferredLine (Phone.getLineIds () [0]);

Пример B. Инициирование исходящего вызова

  1. Invoke Phone.initiateCall.

    Phone.initiateCall (Phone.getLineIds () [0], "5195550123");

  2. Отмена регистрации класса в прослушивателе телефона перед закрытием приложения.

    Phone.removePhoneListener (this);

Категория: Подписано: Этот элемент доступен только для подписанных приложений.Если вы намереваетесь использовать этот элемент, посетите http://www.blackberry.com/go/codesigning, чтобы получить набор ключей для подписи кода.Подписание кода требуется только для приложений, работающих на смартфонах BlackBerry;Разработка на смартфонах BlackBerry Smartphone может происходить без подписи кода.Начиная с: BlackBerry API 4.0.0

http://www.blackberry.com/developers/docs/6.0.0api/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...