设为首页 加入收藏

TOP

Android 监听短信(同时监听广播和数据库)(二)
2014-11-24 01:37:47 来源: 作者: 【 】 浏览:1
Tags:Android 监听 短信 同时 广播 数据库
d_id=mCursor.getString(thread_idIndex);
}

int addressIndex=mCursor.getColumnIndex("address");
if(addressIndex!=-1)
{
_smsInfo.smsAddress=mCursor.getString(addressIndex);
}

int bodyIndex=mCursor.getColumnIndex("body");
if(bodyIndex!=-1)
{
_smsInfo.smsBody=mCursor.getString(bodyIndex);
}

int readIndex=mCursor.getColumnIndex("read");
if(readIndex!=-1)
{
_smsInfo.read=mCursor.getString(readIndex);
}


//根据你的拦截策略,判断是否不对短信进行操作;将短信设置为已读;将短信删除
//TODO
Message msg=smsHandler.obtainMessage();
_smsInfo.action=2;//0不对短信进行操作;1将短信设置为已读;2将短信删除
msg.obj=_smsInfo;
smsHandler.sendMessage(msg);
}
}

if(mCursor!=null)
{
mCursor.close();
mCursor=null;
}
}
}


四、短信处理类


import android.content.ContentValues;
import android.content.Context;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;


/**
* @author 短信的处理
*
*/
public class SmsHandler extends Handler
{
private Context mcontext;

public SmsHandler(Context context)
{
this.mcontext=context;
}

@Override
public void handleMessage(Message msg)
{
SmsInfo smsInfo=(SmsInfo)msg.obj;

if(smsInfo.action==1)
{
ContentValues values = new ContentValues();
values.put("read", "1");
mcontext.getContentResolver().update(Uri.parse("content://sms/inbox"), values, "thread_id= ", new String[]{smsInfo.thread_id});
}
else if(smsInfo.action==2)
{
Uri mUri=Uri.parse("content://sms/");
mcontext.getContentResolver().delete(mUri, "_id= ", new String[]{smsInfo._id});
}
}
}


五、SmsInfo 数据结构


/**
* 主要用于短信拦截
* @author Administrator
*
*/
public class SmsInfo {
public String _id="";
public String thread_id = "";
public String smsAddress = "";
public String smsBody = "";
public String read="";
public int action=0;//1代表设置为已读,2表示删除短信
}


短信拦截大概就是如此了。


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android 超炫的悬浮窗设计与实现 下一篇Lua 学习教程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: