通过ContentResolver监听系统短信变化

需要有读取短信的权限

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

ContentResolver注册一个内容观察者

ContentObserver内容观察者监听系统短信的变化

通过ContentResolver来获取短信内容提供者提供的短信信息

package com.heima.jiantingSms;

import android.app.Activity;
import android.content.ContentResolver;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;

public class jiantingSmsActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.i("jiantingSmsActivity", "短信");
        Log.i("jiantingSmsActivity", "短信");
        //监听系统短信
        ContentResolver resolver = getContentResolver();
        //注册一个内容观察者观察短信数据库
        resolver.registerContentObserver(Uri.parse("content://sms/"), true, new MyContentObserver(new Handler()));
        
       
    }
    
    //内容观察者
    class MyContentObserver extends ContentObserver{

    	private static final String TAG = "MyContentObserver";
		public MyContentObserver(Handler handler) {
			super(handler);
			// TODO Auto-generated constructor stub
		}

		//当被监听的内容发生改变时回调
		@Override
		public void onChange(boolean selfChange) {
			// TODO Auto-generated method stub
			Log.i(TAG, "短信改变了");
			
			Uri uri = Uri.parse("content://sms/outbox");  //发件箱uri
			
			//查看发件箱内容
			ContentResolver resolver = getContentResolver();
			Cursor cursor = resolver.query(uri, new String[]{"address","date","body"}, null, null, null);
			if(cursor!=null && cursor.getCount()>0){
				String address;
				long date;
				String body;
				while(cursor.moveToNext()){
					address = cursor.getString(0);
					date = cursor.getInt(1);
					body = cursor.getString(2);
					Log.i(TAG, "address is " + address + " date is " + date + " body is " + body);
				}
				cursor.close();
			}
			
			
		}
    	
    	
    }
}



转载于:https://my.oschina.net/u/2356176/blog/420728

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值