android 回拨电话删除手机中的私人号码

之前试过使用删除最近一条通话记录,发现会把手机里面的记录也给删除,不知道是代码写的有问题仍是别的缘由:get

ContentResolver resolver = context.getContentResolver();
        Cursor cursor = resolver.query(CallLog.Calls.CONTENT_URI,
                new String[] { "_id" }, null, null, "_id desc limit 1");
        if (cursor.moveToFirst()) {
            int id = cursor.getInt(0);
            resolver.delete(CallLog.Calls.CONTENT_URI, " _id = ? ",
                    new String[] { id + "" });
            return true;
        }it

发如今使用广播监听的时候io

phone_state.equals(TelephonyManager.EXTRA_STATE_IDLE)会执行两次im

致使打点都没有通话记录。static

最后换了一种不是很好的解决办法:时间

结束电话的时候去扫描通话记录,将其中的电话号码的长度小于3的记录删除query

实现代码:while

读取全部的通话记录(其实能够给定一个时间限制,那样会好一点)
co

ContentResolver resolver = context.getContentResolver();
        Cursor cursor = context.getContentResolver().query(CallLog.Calls.CONTENT_URI,                            
                null, null, null, null);                                                                                                 
        if(cursor.moveToFirst()){                                                                                
            do{                                                                                                  
                String number = cursor.getString(cursor.getColumnIndex(Calls.NUMBER));
                System.out.println("电话号码:"+number);
                if(number.length()<3){
                    deleteCallLogByNumber(context, number);
                    return true;
                }
                //删除私人电话的通话记录
                
            }while(cursor.moveToNext());                                                                         
                                                                                                                 
        }                      
删除指定号码的通话记录:let

public static boolean deleteCallLogByNumber(Context context,            String phonenumber) {        boolean ret = false;        ContentResolver cr = context.getContentResolver();        try {            if (phonenumber != null && phonenumber.length() > 0) {                int i = cr.delete(CallLog.Calls.CONTENT_URI, "number=?",                        new String[] { phonenumber });                Log.d("xx", "i:" + i);                if (i > 0) {                    ret = true;                }            }        } catch (Exception e) {            e.printStackTrace();        }        return ret;    }

相关文章
相关标签/搜索