欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

通过ContentResolver监听系统短信变化

程序员文章站 2024-02-09 16:54:52
...

需要有读取短信的权限

     <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