内容观察者实现短信监听

通过内容观察者监听短信是否发生变化,如果发生变化,就用内容提供者读取短信的内容。

原理:

当短信发生变化(比如说来短信),短信应用就会通知内容观察者我的短信发生了变化,并把变化位置短信的uri传过来,有uri之后,内容提供者就可以很方便的读取短信内容了,不过肯定要保证权限够。

内容观察者实现短信监听_人工智能

 



package com.example.duanxinjianting;

import android.app.Activity;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {
private MyObserver observer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
observer=new MyObserver(new Handler());
//注册一个内容观察者(观察指定数据)
Uri uri=Uri.parse("content://sms");
getContentResolver().registerContentObserver(uri,true,observer);
}
/**
* 内容观察者
* */
private class MyObserver extends ContentObserver{

public MyObserver(Handler handler) {
super(handler);
}
/**
* 当被观察的数据发生变化,就回调此方法
* */
@Override
public void onChange(boolean selfChange, Uri uri) {
Log.d("bh",uri.toString());
Cursor cursor=getContentResolver().query(uri,null,null,null,null);
while(cursor.moveToNext()){
int index=cursor.getColumnIndex("body");
String body=cursor.getString(index);
Log.d("bh",body);
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//卸载内容观察者
getContentResolver().unregisterContentObserver(observer);
}
}


 


我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: ​​fanrenyi.com​​;有各种前端、后端、算法、大数据、人工智能等课程。

​版权申明:欢迎转载,但请注明出处​