在Android實現廣播接收
在Android使用過程中,如果你想竊聽別人接收到的短信,達到你不可告人的目的,那么本節(jié)內容可以實現你的需求。當系統(tǒng)收到短信時,會發(fā)出一個action名稱為android.provider.Telephony.SMS_RECEIVED的廣播Intent,該Intent存放了接收到的短信內容,使用名稱“pdus”即可從Intent中獲取短信內容。這里面得到對象數組,數組是以二進制數組格式
- public class SmsBroadcastReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- Object[] pduses=(Object[])intent.getExtras().get("pdus");
- for(Object pdus: pduses){
- byte[] pdusSms=(byte[])pdus;
- SmsMessage smsMessage=SmsMessage.createFromPdu(pdusSms);
- String mobile=smsMessage.getOriginatingAddress();//獲得發(fā)短信手機
- String content=smsMessage.getMessageBody();//獲得短信內容
- Date date= new Date(smsMessage.getTimestampMillis());//獲得短信發(fā)送時間
- SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String sendDate=simpleDateFormat.format(date);
- }
- }
- }
- 在AndroidManifest.xml文件中的<application>節(jié)點里對接收到短信的廣播Intent進行訂閱:
- <receiver android:name=".IncomingSMSReceiver">
- <intent-filter><action android:name="android.provider.Telephony.SMS_RECEIVED"/></intent-filter></receiver>
- 在AndroidManifest.xml文件中添加以下權限:
- <uses-permission android:name="android.permission.RECEIVE_SMS"/><!-- 接收短信權限 -->
- <uses-permission android:name="android.permission.SEND_SMS"/><!-- 發(fā)送短信權限 -->
廣播接收者
除了短信到來廣播Intent,Android還有很多廣播Intent,如:開機啟動、電池電量變化、時間已經改變等廣播Intent。
接收電池電量變化廣播Intent ,在AndroidManifest.xml文件中的<application>節(jié)點里訂閱此Intent:。
- <receiver android:name=".IncomingSMSReceiver">
- <intent-filter>
- <action android:name="android.intent.action.BATTERY_CHANGED"/>
- </intent-filter>
- </receiver>
- 接收開機啟動廣播Intent,在AndroidManifest.xml文件中的<application>節(jié)點里訂閱此Intent:
- <receiver android:name=".IncomingSMSReceiver">
- <intent-filter>
- <action android:name="android.intent.action.BOOT_COMPLETED"/>
- </intent-filter>
- </receiver>
并且要進行權限聲明:
- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
【編輯推薦】