2012-05-15 13 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