您的位置:首页 > 其它

ContentObserver监听发送的短信

2016-06-28 19:43 393 查看
package com.test.contentobserver;

import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

/**
* ContentObserver监听发出的短信
*/
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//为 content://sms 的数据改变注册监听器
getContentResolver().registerContentObserver(
Uri.parse("content://sms"),true,new SmsObserver(new Handler())
);

}

private class SmsObserver extends ContentObserver {
public SmsObserver(Handler handler) {
super(handler);
}

@Override
public void onChange(boolean selfChange) {
//查询发送箱中短信(处于正在发送状态的短信放在发送箱)
Cursor cursor = getContentResolver().query(Uri.parse("content://sms/outbox"), null,null,null,null);

//遍历查询得到的结果集,即可获取用户正在发送的短信
while (cursor.moveToNext()){
StringBuilder sb = new StringBuilder();

//获取短信的发送地址
sb.append("address=").append(cursor.getString(cursor.getColumnIndex("address")));

//获取短信的标题
sb.append(" ; subject=").append(cursor.getString(cursor.getColumnIndex("subject")));

//获取短信的内容
sb.append(" ; body=").append(cursor.getString(cursor.getColumnIndex("body")));

//获取短信的发送时间
sb.append(" ; time=").append(cursor.getString(cursor.getColumnIndex("date")));

Log.d("SmsObserver", "正在发送的短信" + sb.toString());

}
}
}
}


本程序需要如下权限:

<uses-permission android:name="android.permission.READ_SMS"/>

<uses-permission android:name="android.permission.WRITE_SMS"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: