• 四大组件之一 BroadcastReceiver (短信拦截)


    main.xml

    View Code
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width
    ="fill_parent"
    android:layout_height
    ="fill_parent"
    android:orientation
    ="vertical" >
    <TextView
    android:layout_width="fill_parent"
    android:layout_height
    ="wrap_content"
    android:id
    ="@+id/tv"
    android:text
    ="@string/hello" />
    </LinearLayout>

    SMSReceiver.java

    View Code
    package com.puyotech.sms;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.telephony.SmsMessage;
    import android.util.Log;
    import android.widget.Toast;

    public class SMSReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
    Object[]sms=(Object[]) intent.getExtras().get("pdus");
    SmsMessage[] msg=new SmsMessage[sms.length];
    StringBuilder sb = new StringBuilder();
    Log.i("@@", "短信内容已经获得");
    for (int i = 0; i < sms.length; i++) {
    msg[i] = SmsMessage.createFromPdu((byte[]) sms[i]);
    }
    for (SmsMessage currMsg : msg) {
    sb.append("您收到了来自:【");
    sb.append(currMsg.getDisplayOriginatingAddress());
    sb.append("】的信息,内容:");
    sb.append(currMsg.getDisplayMessageBody());
    }
    Log.i("@@", sb.toString());
    Toast toast = Toast.makeText(context, "收到了短消息: " + sb.toString(),Toast.LENGTH_LONG);
    toast.show();
    }

    }

    SMSTestActivity.java

    View Code
    package com.puyotech.sms;

    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;

    public class SMSTestActivity extends Activity {
    private TextView tv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    new Thread(new Runnable() {

    @Override
    public void run() {
    tv=(TextView) findViewById(R.id.tv);

    tv.post(new Runnable() {
    @Override
    public void run() {
    tv.setText("你妹的,在子线程也可以实例化啊");
    }
    });

    }
    }).start();
    }
    }

    AndroidManifest.xml

    View Code
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package
    ="com.puyotech.sms"
    android:versionCode
    ="1"
    android:versionName
    ="1.0" >

    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.READ_SMS"/>
    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" >
    <activity
    android:name=".SMSTestActivity"
    android:label
    ="@string/app_name" >
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>

    <receiver android:name=".SMSReceiver" android:permission="android.permission.BROADCAST_SMS">
    <intent-filter android:priority="2147483648" >
    <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.HOME"/>
    <category android:name="android.intent.category.LAUNCHER"/>
    <category android:name="android.intent.category.ALTERNATIVE"/>
    </intent-filter>
    </receiver>

    </application>

    </manifest>



  • 相关阅读:
    HTML导航
    html5学习笔记
    crm使用soap启用和停用记录
    crmjs区分窗口是否是高速编辑(2)
    关于strace的一点东西
    Android studio第一次使用配置(三)gradle项目构建
    IntelliJ IDEA 问题总结之二(待补充) —— 快捷键、主题样式、导出jar、sqlite
    spark之map与flatMap差别
    leetcode:String to Integer (atoi)
    oracle索引的操作
  • 原文地址:https://www.cnblogs.com/androidsj/p/2405734.html
Copyright © 2020-2023  润新知