Android 监听ConentProvider的数据改变,ContentObserver

来源:互联网 发布:midi伴奏制作软件 编辑:程序博客网 时间:2024/06/05 13:34

这里写图片描述

读取短信需要的权限:

package shortcut.song.com.myapplication;import android.database.ContentObserver;import android.database.Cursor;import android.net.Uri;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MonitorSmsActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_monitor_sms);        // 为content://sms 的数据改变注册监听器        getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, new SmsObserver(new Handler()));    }    private final class SmsObserver extends ContentObserver{        public SmsObserver(Handler handler){            super(handler);        }        @Override        public void onChange(boolean selfChange) {            super.onChange(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.getLong(cursor.getColumnIndex("date") ));                System.out.println("发送的信息:" + sb.toString());            }        }    }}
原创粉丝点击