• 内容观察者实现短信监听


    内容观察者实现短信监听

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

    原理:

    当短信发生变化(比如说来短信),短信应用就会通知内容观察者我的短信发生了变化,并把变化位置短信的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);
        }
    }
  • 相关阅读:
    serialVersionUID作用
    为什么要使用SLF4J而不是Log4J
    认识Log4j
    Java解析xml文件四种方式
    数据结构之R进制转换
    栈的压入、弹出序列
    中间件学习之RMI+JDBC远端数据库的访问
    Linux程序设计综合训练之简易Web服务器
    Html5笔记之小结
    PhoneGap + Dreamweaver 5.5 无法在模拟器中打开的问题
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/7472026.html
Copyright © 2020-2023  润新知