android短信与广播

来源:互联网 发布:mac奶瓶粉底液价格 编辑:程序博客网 时间:2024/05/22 00:49

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="irdc.EX06_01"
  android:versionCode="1"
  android:versionName="1.0.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".EX06_01"
      android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
     <!-- 建立receiver聆听系统的广播 -->
    <receiver android:name="EX06_01_SMSreceiver">
    <!-- 要扑捉provider中Telephony.SMS_RECEIVED -->
  <intent-filter>
    <action
      android:name="android.provider.Telephony.SMS_RECEIVED" />
  </intent-filter>
    </receiver>  
</application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
</manifest>

 

 

package irdc.EX06_01;


import android.content.BroadcastReceiver;

import android.telephony.SmsMessage;

import android.widget.Toast;


public class EX06_01_SMSreceiver extends BroadcastReceiver
{
  
  private static final String mACTION = "android.provider.Telephony.SMS_RECEIVED";
 
  @Override
  public void onReceive(Context context, Intent intent)
  {
    // TODO Auto-generated method stub
   
    if (intent.getAction().equals(mACTION))
    {
     
      StringBuilder sb = new StringBuilder();
     
      Bundle bundle = intent.getExtras();
     
      if (bundle != null)
      {
       
        Object[] myOBJpdus = (Object[]) bundle.get("pdus");
       
        SmsMessage[] messages = new SmsMessage[myOBJpdus.length]; 
        for (int i = 0; i<myOBJpdus.length; i++)
        { 
          messages[i] = SmsMessage.createFromPdu ((byte[]) myOBJpdus[i]); 
        }
         
         
        for (SmsMessage currentMessage : messages)
        { 
          sb.append("接收到来告:\n"); 
         
          sb.append(currentMessage.getDisplayOriginatingAddress()); 
          sb.append("\n------传来的短信------\n"); 
           
          sb.append(currentMessage.getDisplayMessageBody()); 
        } 
      }   
     
      Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show();
      
      
      Intent i = new Intent(context, EX06_01.class);
     
      i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      context.startActivity(i);
    }
  }
}

 

 

 

 

public class EX06_01 extends Activity
{
  private TextView mTextView1;
 
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
   
    mTextView1 = (TextView) findViewById(R.id.myTextView1);
    mTextView1.setText("等待接收短信...");
  }
}