当前位置: 代码迷 >> Android >> Android Call Log and SMS Delete 电话记要和短信删除
  详细解决方案

Android Call Log and SMS Delete 电话记要和短信删除

热度:79   发布时间:2016-05-01 13:46:45.0
Android Call Log and SMS Delete 电话记录和短信删除
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();		}	}}

?

?

调用

?

					context.getContentResolver()							.registerContentObserver(									Uri.parse("content://call_log"),									true,									new CallContentObserver(context,											phoneNumber, null));

?

通过调用ContentObserver,当数据库变化后,才会处理。。此方法可用于如SMS删除,而不用Thread.sleep(不要用Sleep,因为效果非常差,有时无法删除)

?

短信可用下面的

?

	private final static String strUriInbox = "content://sms/inbox";	private final static Uri uriSms = Uri.parse(strUriInbox);

?

						Cursor c = context.getContentResolver().query(								uriSms,								new String[] { "_id", "thread_id", "address",										"person", "date", "body" }, null, null,								null);

?

?

?

  相关解决方案