Android system broadcast SMS

来源:互联网 发布:乐乎lofter4.9.0 编辑:程序博客网 时间:2024/06/18 09:35

1.Activity

package com.alan.broadcast1;import android.content.IntentFilter;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;/** * Created by CanxinQiu on 2016/9/1. * Description: Broadcast lesson, register receiver in Java code * SMS_RECEIVED example * */public class MainActivity extends AppCompatActivity {    private MyReceiver myReceiver;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        IntentFilter filter = new IntentFilter();        filter.addAction("android.provider.Telephony.SMS_RECEIVED");        myReceiver = new MyReceiver();        registerReceiver(myReceiver,filter);    }    @Override    protected void onDestroy() {        super.onDestroy();        unregisterReceiver(myReceiver);    }}
2.BroadcastReceiver
/* * Copyright (c) 2016 All Rights Reserved By FFCS */package com.alan.broadcast1;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.telephony.SmsMessage;import android.util.Log;/** * Created by CanxinQiu on 2016/8/31. * Description: Broadcast lesson, is listen system,include register receiver in Manifest *              and in BroadcastReceiver to receive the action,than do something. *              SMS_RECEIVED example */public class MyReceiver extends BroadcastReceiver{    @Override    public void onReceive(Context context, Intent intent) {        Log.i("Broadcast","Received SMS_Message");        //get sms data,send to broadcast receiver        Bundle bundle = intent.getExtras();        //pdus is the data's key,so that to get data,that is array form        Object object [] = (Object[])bundle.get("pdus");        //only include 140 byte,if sms's data may too long ,        // that we shall create a array which length suitable        SmsMessage [] messages = new SmsMessage[object.length];        for (int i = 0; i < messages.length; i++) {            messages[i] = SmsMessage.createFromPdu((byte [])object [i]);            //get message content            Log.i("SMS body",messages[i].getMessageBody());        }        //get sender's number,number is at the beginning of message array        Log.i("SMS_TELPHONE NUMBER",messages[0].getOriginatingAddress());    }}

1 0