內容觀察者實現短信監聽
阿新 • • 發佈:2017-09-04
view next() png ces alt 方法 dex pri cti
內容觀察者實現短信監聽
通過內容觀察者監聽短信是否發生變化,如果發生變化,就用內容提供者讀取短信的內容。
原理:
當短信發生變化(比如說來短信),短信應用就會通知內容觀察者我的短信發生了變化,並把變化位置短信的uri傳過來,有uri之後,內容提供者就可以很方便的讀取短信內容了,不過肯定要保證權限夠。
package com.example.duanxinjianting; import android.app.Activity; import android.database.ContentObserver; import android.database.Cursor; importandroid.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); } }
內容觀察者實現短信監聽