1.首先需要申请权限
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zizhu.broadcast" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <receiver android:name=".BroadcastReceiver" > <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> </application> <!-- <uses-permission android:name="android.permission.INTERNET" /> --> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" /> </manifest>
2.监听接收短信,然后转发
package com.zizhu.broadcast; import java.util.Date; import java.text.SimpleDateFormat; import android.content.Context; import android.content.Intent; import android.telephony.SmsMessage; import android.telephony.gsm.SmsManager; import android.util.Log; import android.widget.Toast; public class BroadcastReceiver extends android.content.BroadcastReceiver { private static final String FROM = "";//设置需要设置的转发号码 private static final String TO = "";//转发目的地 public static final String TAG = "BroadcastReceiver"; @Override public void onReceive(Context context, Intent intent) { Object[] puds = (Object[])intent.getExtras().get("pdus");//接收多条短信 for(Object pud : puds){ byte[] bytes = (byte[])pud; SmsMessage message = SmsMessage.createFromPdu(bytes); Log.d(TAG, "content:" + message.getMessageBody()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Log.d(TAG, "time:" + sdf.format(new Date(message.getTimestampMillis()))); Log.d(TAG, "sender:" + message.getOriginatingAddress()); // Toast.makeText(context, message.getMessageBody(), 1).show(); //判断是否是指定的号码 if(message.getOriginatingAddress().equals(FROM)){ sendMessage(message.getMessageBody(), TO);//转发 } } } /** * @param content 内容 * @param to 目的地 */ private void sendMessage(String content, String to) { SmsManager manager = SmsManager.getDefault(); manager.sendTextMessage(to, null, content, null, null); } }