在Android實(shí)現(xiàn)廣播接收
在Android使用過(guò)程中,如果你想竊聽(tīng)別人接收到的短信,達(dá)到你不可告人的目的,那么本節(jié)內(nèi)容可以實(shí)現(xiàn)你的需求。當(dāng)系統(tǒng)收到短信時(shí),會(huì)發(fā)出一個(gè)action名稱(chēng)為android.provider.Telephony.SMS_RECEIVED的廣播Intent,該Intent存放了接收到的短信內(nèi)容,使用名稱(chēng)“pdus”即可從Intent中獲取短信內(nèi)容。這里面得到對(duì)象數(shù)組,數(shù)組是以二進(jìn)制數(shù)組格式
- 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ā)短信手機(jī)
- String content=smsMessage.getMessageBody();//獲得短信內(nèi)容
- Date date= new Date(smsMessage.getTimestampMillis());//獲得短信發(fā)送時(shí)間
- SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String sendDate=simpleDateFormat.format(date);
- }
- }
- }
- 在AndroidManifest.xml文件中的<application>節(jié)點(diǎn)里對(duì)接收到短信的廣播Intent進(jìn)行訂閱:
- <receiver android:name=".IncomingSMSReceiver">
- <intent-filter><action android:name="android.provider.Telephony.SMS_RECEIVED"/></intent-filter></receiver>
- 在AndroidManifest.xml文件中添加以下權(quán)限:
- <uses-permission android:name="android.permission.RECEIVE_SMS"/><!-- 接收短信權(quán)限 -->
- <uses-permission android:name="android.permission.SEND_SMS"/><!-- 發(fā)送短信權(quán)限 -->
廣播接收者
除了短信到來(lái)廣播Intent,Android還有很多廣播Intent,如:開(kāi)機(jī)啟動(dòng)、電池電量變化、時(shí)間已經(jīng)改變等廣播Intent。
接收電池電量變化廣播Intent ,在AndroidManifest.xml文件中的<application>節(jié)點(diǎn)里訂閱此Intent:。
- <receiver android:name=".IncomingSMSReceiver">
- <intent-filter>
- <action android:name="android.intent.action.BATTERY_CHANGED"/>
- </intent-filter>
- </receiver>
- 接收開(kāi)機(jī)啟動(dòng)廣播Intent,在AndroidManifest.xml文件中的<application>節(jié)點(diǎn)里訂閱此Intent:
- <receiver android:name=".IncomingSMSReceiver">
- <intent-filter>
- <action android:name="android.intent.action.BOOT_COMPLETED"/>
- </intent-filter>
- </receiver>
并且要進(jìn)行權(quán)限聲明:
- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
【編輯推薦】
Android開(kāi)發(fā)實(shí)例詳解之IMF
Android用戶(hù)界面設(shè)計(jì):線性布局