2012-02-24 8 views
0

を動作しません、私はすべてのコールログを削除するには、次のコードを使用していますはブラックベリー:PhoneLogs.deleteCall()ブラックベリー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

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

しかし、この方法にはいくつかのバグがあります。私の意見では全く使用しないでください:-)

関連する問題