Android(安卓)Call Log and SMS Delete 电话记录和短信删除
16lz
2021-01-24
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;}@Overridepublic 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);
更多相关文章
- Android(安卓)调用系统短信 - 群发
- Android使用setContentView实现页面的转换效果
- Android后端的项目创建流程(IDEA2020 + Tomcat 10 + JDK11)
- android 实现在文本内容超过固定宽度可手动左右滚动查看效果
- android登录tomcat服务器并查找数据库的内容
- 05_Content Provider
- Android之Adapter使用方法总结
- Android具有粘性的小球,跌落反弹形成文字的动画效果
- 如何查看android的avd中的sqlite数据库的表