Android开发删除短信

本人一直有一个需求,想要手机自动拦截黑名单里联系人的信息并自动删除这些短信,手机管家之类的软件可以拦截但是没找到能删除这些短信的,于是就萌生了想自己写一个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);
 

 

posted @ 2015-04-05 22:53  AllenWu  阅读(2986)  评论(0编辑  收藏  举报