在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里面删除,会引入一些延迟。我也试过这些选项。但没有运气!
提前感谢您的帮助。
答案 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。在我看来,根本不应该使用它: - )