本人一直有一个需求,想要手机自动拦截黑名单里联系人的信息并自动删除这些短信,手机管家之类的软件可以拦截但是没找到能删除这些短信的,于是就萌生了想自己写一个android软件的想法。
加上物联网的兴起,安卓设备开发肯定前景很好。 随后又得知 安卓开发可以用java语言,就用eclipse,呵呵,本人还是有些java基础的,于是乎,本人就开始扑腾了。
把eclipse sdk adt搭建好之后,本人就开始了开发这款自动拦截并删除黑名单短信的软件。都已经实现。
在编写过程中,删除短信的模块倒是坑了我挺长时间,原因是函数调用的时候参数值没写好,网上的版本多,当时crt+v的坑了我好久,现在把删除短信的模块发下。在我的手机上试过,亲测可用的。
public void deleteSMS( String smscontent) { try { // 准备系统短信收信箱的uri地址 Uri uri = Uri.parse("content://sms/inbox");// 收信箱 // 查询收信箱里所有的短信 String[] projection = new String[] { "_id", "address", "person", "body", "date", "type" ,"thread_id"};//"_id", "address", "person",, "date", "type String where = " address = '10001'"; Cursor curs = getContentResolver().query(uri, projection, where,null, "date desc"); if(curs.moveToFirst()) { do{ // String phone = // isRead.getString(isRead.getColumnIndex("address")).trim();//获取发信人 String body =curs.getString(curs.getColumnIndex("body")).trim();// 获取信息内容 if (body.contains(smscontent)) { int id = curs.getInt(curs.getColumnIndex("_id")); getContentResolver().delete(Uri.parse("content://sms/"),"_id=?",new String[]{ String.valueOf(id)}); } }while (curs.moveToNext()); } curs.close(); } catch (Exception e) { e.printStackTrace(); } }
算法思路是:把发件人是10001的所有短信中,包含某个字符串的短信给删除掉,想要把短信内容换成别的 _id、发件人之类的修改下函数就可以了啊。
调用这个模块的函数我是用一个button的 onClickListener来实现的。
BtnDelMsg.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub deleteSMS("尊敬的客户,截"); } });
一个比较清晰简洁的参考链接
http://wx1985113.iteye.com/blog/1231094
总结:
删除短信函数参数的3种写法
getContentResolver().delete(Uri.parse("content://sms/"),"_id=?",new String[]{ String.valueOf(id)});
getContentResolver().delete(Uri.parse("content://sms/"),"_id="+id,null);
getContentResolver().delete(Uri.parse("content://sms/"+id),null,null);
转载于:https://www.cnblogs.com/lovecreatemylife/p/4394983.html