Blackberry:PhoneLogs.deleteCall()不起作用

时间:2012-02-24 15:18:42

标签: blackberry

在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 :(得分:0)

使用以下命令无法删除调用日志条目的已知错误:PhoneLogs.deleteCall()。请在此处查看:http://supportforums.blackberry.com/t5/Java-Development/Unable-to-delete-phone-logs/m-p/1587315

作为一种hackish解决方案,您可以使用输入模拟。例如:

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);
            }
        });
    }

但是这种方法有一些bug。在我看来,根本不应该使用它: - )