主题:监听短信并获取短信内容

  1. 设置权限:
    <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.lin.sms"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="14"        android:targetSdkVersion="21" />    <span style="color:#ff0000;"><uses-permission android:name="android.permission.RECEIVE_SMS" /></span>     <span style="color:#ff0000;"><uses-permission android:name="android.permission.READ_SMS" /></span>    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.lin.sms.MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

  2. 布局文件:<pre name="code" class="html"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentLeft="true"        android:layout_alignParentTop="true"        android:layout_marginLeft="25dp"        android:layout_marginTop="104dp"        android:text="号码:" />    <TextView        android:id="@+id/textView3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignRight="@+id/textView1"        android:layout_below="@+id/textView1"        android:layout_marginTop="29dp"        android:text="内容:" />    <TextView        android:id="@+id/content"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignBaseline="@+id/textView3"        android:layout_alignBottom="@+id/textView3"        android:layout_marginLeft="16dp"        android:layout_toRightOf="@+id/textView3"        android:hint="短信内容" />    <TextView        android:id="@+id/number"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignBaseline="@+id/textView1"        android:layout_alignBottom="@+id/textView1"        android:layout_alignLeft="@+id/content"        android:hint="来电号码" /></RelativeLayout>

     
  3. Java代码:<pre name="code" class="java">package com.lin.sms;import com.lin.sms.R;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.telephony.SmsMessage;import android.widget.TextView;public class MainActivity extends Activity {<span style="color:#ff0000;">public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";</span>private TextView tel_num;private TextView tel_content;private String content;private String sender;<span style="color:#ff0000;">private BroadcastReceiver mReceiver = new BroadcastReceiver() </span>{@Overridepublic void onReceive(Context context, Intent intent) {// 先判断广播消息String action = intent.getAction();if (SMS_RECEIVED_ACTION.equals(action)) {// 获取intent参数Bundle bundle = intent.getExtras();// 判断bundle内容if (bundle != null) {// 取pdus内容,转换为Object[]Object[] pdus = (Object[]) bundle.get("pdus");// 解析短信SmsMessage[] messages = new SmsMessage[pdus.length];for (int i = 0; i < messages.length; i++) {byte[] pdu = (byte[]) pdus[i];messages[i] = SmsMessage.createFromPdu(pdu);}// 解析完内容后分析具体参数for (SmsMessage msg : messages) {content = msg.getMessageBody();sender = msg.getOriginatingAddress();if (sender.equals("10086")) {//此处为设置当来短信的号码为10086时候才把获取到的数据显示出来display();}}}}}};private void display() {tel_num.setText(sender);tel_content.setText(content);}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);System.out.println("============首页");tel_num = (TextView) findViewById(R.id.number);tel_content = (TextView) findViewById(R.id.content);}@Overrideprotected void onStart() {<span style="color:#ff0000;">IntentFilter intentFilter = new IntentFilter();</span><span style="color:#ff0000;">intentFilter.addAction(SMS_RECEIVED_ACTION);</span><span style="color:#ff0000;">registerReceiver(mReceiver, intentFilter);</span>super.onStart();}@Overrideprotected void onDestroy() {<span style="color:#ff0000;">unregisterReceiver(mReceiver);</span>super.onDestroy();}}
     
总结:代码比较简单,相信大家看看就能懂,红色字体为关键处,勿漏。

更多相关文章

  1. Android demo之发送短信
  2. android 通过intent打开 skype并传入号码
  3. android实现发送短信并保存到数据库,同时可以获得发送报告和接收
  4. android 获取APP大小及其清理缓存内容
  5. Android短信发送功能
  6. android Intent 短信群发
  7. Android发送短信与邮件
  8. Android内容提供者ContentProvider用法实例分析
  9. android 短信自动转发功能

随机推荐

  1. Eclipse下搭建android开发环境
  2. android数据库持久化框架
  3. Studio报错 You need to use a Theme.App
  4. 【Android】如何快速构建Android Demo
  5. .Net 转战 Android 4.4 日常笔记(7)--apk的
  6. 【Android】手机端的投射
  7. 微信的研究
  8. Android下实现tab页个人比较推崇的方法
  9. 为Activity之间跳转添加动画
  10. [Android] 随时拍图像处理部分总结及源码