第七例:短信监控之内容观察者

来源:互联网 发布:淘宝上买官换机靠谱吗 编辑:程序博客网 时间:2024/05/17 04:28
package demo.my.com.myapidemo.content;import android.app.Activity;import android.content.ContentResolver;import android.content.Context;import android.database.ContentObserver;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.os.Handler;import android.text.Editable;import android.util.Log;import android.widget.EditText;import demo.my.com.myapidemo.R;/** * Created by Hack on 2015/10/22. */public class SmsContentObserver extends Activity {    private static final String TAG = "apidemo";    private EditText editText;    ContentObserver smsObserver;    private Uri SMS_INBOX = Uri.parse("content://sms");    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        smsObserver = new SmsObserver(this, smsHandler);        getContentResolver().registerContentObserver(SMS_INBOX, true,                smsObserver);        editText = (EditText) findViewById(R.id.edit_text);    }    public Handler smsHandler = new Handler() {        //这里可以进行回调的操作        //TODO    };    class SmsObserver extends ContentObserver {        public SmsObserver(Context context, Handler handler) {            super(handler);        }        @Override        public void onChange(boolean selfChange) {            super.onChange(selfChange);            getSmsFromPhone();        }    }    //获取手机短信内容    public void getSmsFromPhone() {        ContentResolver cr = getContentResolver();        String[] projection = new String[]{"body","type"};//"_id", "address", "person",, "date", "type"        String where = " date >  " + (System.currentTimeMillis() - 10 * 1000);        Cursor cur = cr.query(SMS_INBOX, projection, where, null, "date desc");        if (null == cur)            return;        if (cur.moveToNext()) {            String body = cur.getString(cur.getColumnIndex("body"));            String sms_type = cur.getString(cur.getColumnIndex("type"));            if (body.indexOf("安卓") != -1 && sms_type.equals("1")) { //内容判断                String res = body.substring(0, 4);                Log.i(TAG, res);                editText.setText(res);                //将光标移动到字符串最后                Editable ea = editText.getText();                editText.setSelection(ea.length());            }        }    }    @Override    protected void onStart() {        super.onStart();    }    @Override    protected void onResume() {        super.onResume();    }    @Override    protected void onDestroy() {        super.onDestroy();        //这个时候就取消这个内容观察者,        getContentResolver().unregisterContentObserver(smsObserver);        Log.i(TAG, "onDestroy");    }}

在Activity创建的时候,注册内容观察者,在销毁的时候,取消内容观察者。

应用所需要的权限:

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

监听验证码

Telephony.Sms相关知识链接:

http://www.cnblogs.com/fengzhblog/p/3193973.html

0 0
原创粉丝点击