2012-05-15 12 views
1

使用下面的代碼,我可以刪除特定號碼的呼叫,這隻能很好地工作,它很慢,並且應用程序在代碼運行時變得無響應(特別是如果日誌中有很多呼叫)如何從上次通話中刪除日誌?

so what我真的希望它只能檢查日誌中的最後一個呼叫,而不是通過空洞日誌。

String strUriCalls = "content://call_log/calls"; 
    Uri UriCalls = Uri.parse(strUriCalls); 
    Cursor c = context.getContentResolver().query(UriCalls, null, null, 
      null, null); 
    if (c.getCount() <= 0) { 
     Toast.makeText(context, "Call log empty", Toast.LENGTH_SHORT) 
       .show(); 
    } 

    while (c.moveToNext()) { 
     SharedPreferences sp = PreferenceManager 
       .getDefaultSharedPreferences(context); 
     String gonnabprefd = sp.getString("callerase", null); 
     String[] numarry = gonnabprefd.split(" "); 
     for (int i = 0; i < numarry.length; i++) { 
      String gonnabpref = numarry[i]; 
      String queryString = "NUMBER='" + gonnabpref + "'"; 
      Log.v("Numberimcomingreciver ", queryString); 
      int b = context.getContentResolver().delete(UriCalls, 
        queryString, null); 
      if (b >= 1) { 
       Toast.makeText(context, "deleted", Toast.LENGTH_LONG) 
         .show();}} 

回答

0

不願意回答我的問題,但除去

while (c.moveToNext()) { 

工作

+1

你的答案是錯的。您需要在單獨的線程中執行查詢和處理結果,而不是在UIThread中。檢查'AsyncTask'類。 – m0skit0

+0

你是對的這導致了另一個問題。 – steo