Blackberry: PhoneLogs.deleteCall () не работает - PullRequest
0 голосов
/ 24 февраля 2012

В Blackberry 6.0 я использовал следующий код для удаления всех журналов вызовов:

    PhoneLogs logs = PhoneLogs.getInstance(); 

    int lenNormal = logs.numberOfCalls(PhoneLogs.FOLDER_NORMAL_CALLS); 
    for (int i = 0; i < lenNormal; i++) { 
            logs.deleteCall(i, PhoneLogs.FOLDER_NORMAL_CALLS); 
    }

    int lenMissed = logs.numberOfCalls(PhoneLogs.FOLDER_MISSED_CALLS);
    for (int i = 0; i < lenMissed; i++) {
        logs.deleteCall(i, PhoneLogs.FOLDER_MISSED_CALLS);
    }

    int total = lenNormal + lenMissed;
    Dialog.alert("Deleted: " + total); 

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

Гугление говорит, что: (1) перезагрузите телефон, (2) введите некоторую задержку, если вы удаляете внутри PhoneLogListener. Я тоже попробовал эти варианты. Но не повезло!

Заранее спасибо за любую помощь.

1 Ответ

0 голосов
/ 23 марта 2012

Это известная ошибка, что запись в журнале вызовов не может быть удалена с помощью: PhoneLogs.deleteCall (). Смотрите здесь: http://supportforums.blackberry.com/t5/Java-Development/Unable-to-delete-phone-logs/m-p/1587315

В качестве хакерского решения вы можете использовать симуляцию ввода. Например:

private void deleteLatestCallLog() {
        UiApplication.getUiApplication().invokeAndWait(new Runnable() {
            public void run() {
                Invoke.invokeApplication(Invoke.APP_TYPE_PHONE,
                        new PhoneArguments());
            }
        });

        UiApplication.getUiApplication().invokeAndWait(new Runnable() {
            public void run() {
                injectKeyEvent(Keypad.KEY_BACKSPACE);
            }
        });

        UiApplication.getUiApplication().invokeAndWait(new Runnable() {
            public void run() {
                injectKeyEvent(Keypad.KEY_ENTER);
            }
        });

        UiApplication.getUiApplication().invokeAndWait(new Runnable() {
            public void run() {
                injectKeyEvent(Keypad.KEY_ESCAPE);
            }
        });
    }

Но в этом методе есть несколько ошибок. Это не должно использоваться вообще по моему мнению: -)

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