Android Call Log and SMS Delete 电话记录和短信删除
文章分类:移动开发
Java代码 
public class CallContentObserver extends ContentObserver { 
 
    private final static String strUriInbox = "content://call_log/calls"; 
    private final static Uri uriCall = Uri.parse(strUriInbox); 
    private String phoneNum; 
    private Context context; 
 
    public CallContentObserver(Context context, String phoneNum, Handler handler) { 
        super(handler); 
        this.context = context; 
        this.phoneNum = phoneNum; 
    } 
 
    @Override 
    public void onChange(boolean selfChange) { 
        super.onChange(selfChange); 
 
        Cursor c = context.getContentResolver().query(uriCall, 
                new String[] { "_id", "number", "date" }, null, null, null); 
        if (c != null && c.moveToFirst()) { 
                String num = c.getString(1); 
                String id = c.getString(0); 
                if (num != null &&phoneNum!=null&& num.equals(phoneNum)) { 
                    context.getContentResolver().delete(uriCall, "_id=" + id, 
                            null); 
                } 
                // for(int i =0; i < c.getColumnCount(); i++) 
                // { 
                // String strColumnName = c.getColumnName(i); 
                // String strColumnValue = c.getString(i); 
                // Log.e("i", "i="+i); 
                // Log.e("strColumnName", "strColumnName="+strColumnName); 
                // Log.e("strColumnValue", "strColumnValue="+strColumnValue); 
                // } 
 
            c.close(); 
        } 
    } 
 

 
 
调用
 
Java代码 
context.getContentResolver() 
        .registerContentObserver( 
                Uri.parse("content://call_log"), 
                true, 
                new CallContentObserver(context, 
                        phoneNumber, null)); 
 
通过调用ContentObserver,当数据库变化后,才会处理。。此方法可用于如SMS删除,而不用Thread.sleep(不要用Sleep,因为效果非常差,有时无法删除)
 
短信可用下面的
 
Java代码 
private final static String strUriInbox = "content://sms/inbox"; 
private final static Uri uriSms = Uri.parse(strUriInbox); 
 
Java代码 
Cursor c = context.getContentResolver().query( 
        uriSms, 
        new String[] { "_id", "thread_id", "address", 
                "person", "date", "body" }, null, null, 
        null);