Android使用ContentObserver进行实时短信填写

来源:互联网 发布:伪随机算法 编辑:程序博客网 时间:2024/04/29 16:35
public class SmsObservable extends ContentObserver {    private static final String TAG = "SmsObservable";    private Context mContext;    private Handler handler;    /**     * Creates a content observer.     *     * @param handler The handler to run {@link #onChange} on, or null if none.     */    public SmsObservable(Context mContext, Handler handler) {        super(handler);        this.mContext = mContext;        this.handler = handler;    }    @Override    public void onChange(boolean selfChange, Uri uri) {        super.onChange(selfChange, uri);        Log.e(TAG, "uri :" + uri.toString());        //会触发两次,只有第二次有用        if ("content://sms/raw".equals(uri.toString())) {            return;        }        Uri inboxUri = Uri.parse("content://sms/inbox");        Cursor cursor = mContext.getContentResolver().query(inboxUri, null, null, null, "date desc");        if (cursor != null) {            if (cursor.moveToFirst()) {                String address = cursor.getString(cursor.getColumnIndex("address"));                String body = cursor.getString(cursor.getColumnIndex("body"));                Log.e(TAG, "address :" + address + "    body : " + body);                // TODO: 2016/7/3  此处还可以拿手机号判断是不是本公司该服务器发出的消息                //进行正则表达式验证                Pattern pattern = Pattern.compile("(\\d{6})");//6个数字连在一起的                Matcher matcher = pattern.matcher(body);                if (matcher.find()) {                    String code = matcher.group(0);//获取当前组里面的第一个                    Log.e(TAG, "匹配出来的code :" + code);                    handler.obtainMessage(MainActivity.SEND_SMS,code).sendToTarget();                }            }        }    }}
public class MainActivity extends AppCompatActivity {    private static final String TAG = "MainActivity";    private SmsObservable smsObservable;    public static final int SEND_SMS  = 1;    private Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            Log.e(TAG,"....  msg :"+msg.obj);        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        smsObservable = new SmsObservable(this,handler);        //@NonNull Uri uri, boolean notifyForDescendents,@NonNull ContentObserver observ        Uri uri = Uri.parse("content://sms");        /**         * 是否监听sms uri中的所有变化         */        getContentResolver().registerContentObserver(uri,true,smsObservable);    }    @Override    protected void onDestroy() {        super.onDestroy();        getContentResolver().unregisterContentObserver(smsObservable);    }}
0 0
原创粉丝点击