`
bcyy
  • 浏览: 1810139 次
文章分类
社区版块
存档分类
最新评论

mars老师[Android开发视频教学] 01_22 广播机制(2)

 
阅读更多

mars老师[Android开发视频教学] 01_22 广播机制(2)

使用代码注册BroadReceiver

创建项目:TestBC2

==>main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<Button
	android:id="@+id/register"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="绑定监听器"
    />
<Button
	android:id="@+id/unregister"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="解除监听器绑定"
    />
	
</LinearLayout>


==>TestBC2Activity.java

package mars.testbc2;

import android.app.Activity;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class TestBC2Activity extends Activity {
    /** Called when the activity is first created. */
	private Button registerButton = null;
	private Button unregisterButton = null;
	private SMSReceiver smsReceiver = null;
	
	private static final String SMS_ACTION = "android.provider.Telephony.SMS_RECEIVED";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        registerButton = (Button)findViewById(R.id.register);
        registerButton.setOnClickListener(new RegisterReceiverListener());
        unregisterButton = (Button)findViewById(R.id.unregister);
        unregisterButton.setOnClickListener(new UnRegisterReceiverListener());
    }
    
    class RegisterReceiverListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			//生成一个BroiadcastReceiver对象
			smsReceiver = new SMSReceiver();
			//生成一个IntentFilter对象
			IntentFilter filter = new IntentFilter();
			//为IntentFilter添加一个Action
			filter.addAction(SMS_ACTION);
			//将BroadcastReceiver对象注册到系统当中
			TestBC2Activity.this.registerReceiver(smsReceiver, filter);
		}
    	
    }
    
    class UnRegisterReceiverListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			//解除BroadcastReceiver对象的注册
			TestBC2Activity.this.unregisterReceiver(smsReceiver);
		}
    	
    }
}

==>SMSReceiver.java

package mars.testbc2;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;

public class SMSReceiver extends BroadcastReceiver{

	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		System.out.println("receive message");
		
		//接受Intent对象当中的数据
		Bundle bundle = intent.getExtras();
		//在Bundle对象当中有一个属性名为pdus,这个属性的值是一个Object数组
		Object[] myOBJpdus = (Object[]) bundle.get("pdus"); 
		//创建一个SmsMessage类型的数组
        SmsMessage[] messages = new SmsMessage[myOBJpdus.length];  
        System.out.println(messages.length);
        for (int i = 0; i<myOBJpdus.length; i++) 
        {  
          //使用Object数组当中的对象创建SmsMessage对象
          messages[i] = SmsMessage.createFromPdu((byte[]) myOBJpdus[i]);  
          //调用SmsMessage对象的getDisppalyMessageBody()方法,就可以得到消息的内容
          System.out.println(messages[i].getDisplayMessageBody());
        }
	}

}


在AndroidManifest.xml声明许可

	<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics