Android廣播接收簡訊的簡單實現

來源:互聯網
上載者:User

Android廣播接收簡訊的簡單實現

 

說明: 接受簡訊廣播,由Intent解析出簡訊內容明文, intent中的簡訊時已pud形式傳出的,即byte[][]二位元組,

需要轉化出明文SmsMessage.createFromPdu(pdus[i])


廣播接收器:

public class SmsReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
if (intent != null && intent.getAction() != null) {
if (intent.getAction().equals(Intents.SMS_RECEIVED_ACTION)) {
SmsMessage[] msgs = getMessagesFromIntent(intent);
// to use this SmsMessage

String messageBody = "";
for (SmsMessage message : messages) {
messageBody += message.getMessageBody();
}

Log.i("MSG", messageBody);
}
}

}

/**

* Read the PDUs out of an {@link #SMS_RECEIVED_ACTION} or a
* {@link #DATA_SMS_RECEIVED_ACTION} intent.
*
* @param intent
* the intent to read from
* @return an array of SmsMessages for the PDUs
*/
public static final SmsMessage[] getMessagesFromIntent(Intent intent) {
Object[] messages = (Object[]) intent
.getSerializableExtra("pdus");
if (messages == null) {
return null;
}
byte[][] pduObjs = new byte[messages.length][];

for (int i = 0; i < messages.length; i++) {
pduObjs[i] = (byte[]) messages[i];
}
byte[][] pdus = new byte[pduObjs.length][];
int pduCount = pdus.length;
SmsMessage[] msgs = new SmsMessage[pduCount];
for (int i = 0; i < pduCount; i++) {
pdus[i] = pduObjs[i];
msgs[i] = SmsMessage.createFromPdu(pdus[i]); //解析每一段pdu位元組數組,返回解碼明文
}
return msgs;
}

}

注意: manifest中聲明許可權:


//接收簡訊必須的許可權

//讀系統簡訊許可權

//寫系統簡訊許可權

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.