`
Bauble
  • 浏览: 66958 次
  • 性别: Icon_minigender_1
  • 来自: Mercury
社区版块
存档分类
最新评论

Android21_广播机制(二)

阅读更多

 

一、注册BroadcastReceiver的方法

       BroadcastReceiver用于监听被广播的事件(事件的形式是Intent),为了达到这个目的,BroadcastReceiver必须进行注册,注册的方法有以下两种。

1.AndroidManifest.xml当中进行注册。

       上次说的内容。即使应用程序关闭了,当前程序依然处于活动状态,能够接收到广播。只要是注册了就会接收。

       2.在应用程序的代码当中进行注册。

              有时我们并不需要应用程序总是运行的,并且一直监听广播,所以此时我们可以使用在应用程序中进行注册BroadcastReceiver

 

       注册BroadcastReceiver

registerReceiver(receiver,filter);

 

      取消注册BroadcastReceiver:

unregisterReceiver(receiver);

  如果一个BroadcastReceiver用于更新UI,那么通常会使用这种方法进行注册,在Activity启动的时候注册BroadcastReceiver,在Activity不可见以后取消注册。

 

实例程序:

  

 

BroadcastReceiverActivity02.java

package com.android.activity;
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 BroadcastReceiverActivity02 extends Activity {
	private static final String SMS_ACTION = "android.provider.Telephony.SMS_RECEIVED";
	private Button registerButton = null;
	private Button unregisterButton = null;
	private SMSReceiver smsReceiver = null;
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        registerButton = (Button)findViewById(R.id.registerButton);
        unregisterButton = (Button)findViewById(R.id.unregisterButton);
        registerButton.setOnClickListener(new RegisterListener());
        unregisterButton.setOnClickListener(new UnRegisterListener());
    }
	class RegisterListener implements OnClickListener{
		public void onClick(View v) {
			//生成BroadcastReceiver对象
			smsReceiver = new SMSReceiver();
			//生成一个IntentFilter对象
			IntentFilter intentFilter = new IntentFilter();
			intentFilter.addAction(SMS_ACTION);
			//将BroadcastReceiver对象注册到系统中
			BroadcastReceiverActivity02.this.registerReceiver(smsReceiver, intentFilter);
		}
	}
	class UnRegisterListener implements OnClickListener{
		public void onClick(View v) {
			smsReceiver = new SMSReceiver();
			BroadcastReceiverActivity02.this.unregisterReceiver(smsReceiver);
		}
	}
}

 

SMSReceiver.java

package com.android.activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class SMSReceiver extends BroadcastReceiver {
	@Override
	public void onReceive(Context arg0, Intent arg1) {
		System.out.println("receiver message");
	}
}

 运行界面如下:


   
当点击注册监听器时,就会将SMSReceiver注册。此时如果发送短信就会被其捕获。在EclipseDDMS视图下Emulator Control标签下可以模拟短信发送。


   

短信界面:


   

 

 

 

二、Android内置的BroadcastActions

Android平台当中,内置了很多Action,用于帮助开发者监听手机上所发生的各种事件,以下是一些比较常见的Action,在帮助文档中Intent的常量中有完整的:



 将接收的消息解析:

SMSReceiver.java

 

package com.android.activity;
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) {
		System.out.println("receiver message");
		//将消息进行解析
		//接收Intent对象中的数据
		Bundle bundle  = intent.getExtras();
		//在Bundle对象中有一个属性pdus,这个属性的值是一个object数组
		Object[] objectPDUS = (Object[])bundle.get("pdus");
		//创建一个SmsMessage类型的数组
		SmsMessage[] messages = new SmsMessage[objectPDUS.length];
		for(int i = 0;i<objectPDUS.length;i++){
			//使用object数组当中的对象创建SmsMessage对象
			messages[i] = SmsMessage.createFromPdu((byte[])objectPDUS[i]);
			//调用SmsMessage对象的输出消息方法
			System.out.println(messages[i].getDisplayMessageBody());
		}
	}
}
  • 大小: 10.3 KB
  • 大小: 38.2 KB
  • 大小: 12.7 KB
  • 大小: 36.2 KB
  • 大小: 175.2 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    apk.rar_.apk_android_android apk_apk

    1. **AndroidManifest.xml**:这是应用的核心元数据,定义了应用的组件(如活动、服务、广播接收器和内容提供者)、所需的权限、支持的Android版本和其他相关信息。 2. **res**目录:包含了应用的各种资源,如图片...

    android-关于广播机制的使用

    总结,Android广播机制是实现系统事件通知和跨应用通信的重要手段。理解并熟练运用广播,可以提升应用的功能性和响应性。在实际开发中,根据需求选择合适的注册方式,合理设计IntentFilter,以及适时使用...

    Android 广播机制实例

    Android中的广播机制设计的非常出色,很多事情原本需要开发者亲自操作的,现在只需等待广播告知自己就可以了,大大减少了开发的工作量和开发周期。而作为应用开发者,就需要数练掌握Android系统提供的一个开发利器,...

    Android_广播通知机制r.pdf

    【Android 广播通知机制详解】 在Android操作系统中,广播是一种重要的组件,它允许应用程序之间进行异步通信,即便它们并未直接相互交互。广播通知机制是Android系统中一种事件驱动的通信方式,允许开发者在系统...

    Android广播机制详解

    本文将详细解析Android广播机制的核心概念、工作原理以及如何使用。 一、广播基本概念 1. 广播Intent:广播Intent是Android系统中用于发送和接收广播消息的对象。它包含一个动作(Action)、数据(Data)、类型...

    Android Source_source_android_

    **Broadcast Receiver**:Android的事件驱动机制,允许应用在全局范围内响应系统或其它应用发送的广播消息。 **Content Provider**:作为数据共享的桥梁,使得不同应用之间可以安全地交换数据。 在“Android ...

    sms.zip_Android 数据库_android_android sms_sms

    6. **安全与隐私**:在处理用户短信数据时,必须遵循隐私法规和Android权限机制。通常需要请求`READ_SMS`和`WRITE_SMS`权限才能访问和修改短信。此外,应确保数据的安全存储,避免未经授权的访问。 7. **API接口**...

    Android_Code.rar_Android教程_android_android 入门_android 源码_java 教程

    2. **Android源码**: 深入学习Android源码有助于理解系统的运行机制。在压缩包中可能包含了简单的示例源码,比如如何创建自定义View,处理用户事件,以及与服务、广播接收器等组件交互。源码阅读能提升开发者解决...

    Android_note.rar_ANDROID Note_Android_note_DEMO_androidnote

    2. **意图(Intent)**:Android中的消息传递机制,用于启动活动、服务或广播接收器。初学者会学习如何创建和解析意图,以及如何在不同组件之间传递数据。 3. **布局(Layout)**:XML文件定义了用户界面的结构。...

    broadcast_Android 广播机制broadcast用法实例.rar

    在这个“broadcast_Android 广播机制broadcast用法实例.rar”压缩包中,我们很可能会找到关于如何使用BroadcastReceiver的示例代码和教程。 首先,广播分为两种类型:显式广播和隐式广播。显式广播是直接指定接收者...

    SMS.rar_android_android sms_android 短信_短信拦截

    通过理解有序广播的工作机制,开发者可以有效地控制短信的接收和处理,以实现个性化的需求,如垃圾短信过滤、重要信息提醒等。在实际开发中,应确保遵循最佳实践,尊重用户隐私,并遵守Android的权限管理规定。

    android广播机制

    Android 广播机制是Android系统中一种用于组件间通信的重要机制。BroadcastReceiver,即广播接收器,是Android四大组件之一,它允许应用程序在不互相依赖的情况下接收和响应系统或应用程序发出的广播事件。这些事件...

    android 广播机制

    在Android系统中,广播机制是应用之间通信的一种重要方式,尤其在无特定目标接收者时。广播分为两类:普通广播(Normal broadcasts)和有序广播(Ordered broadcasts)。 **普通广播**是完全异步的,其特点是同时...

    Android-API.rar_android_android api_java android api_资料

    2. **Intent**: Intent是Android中的消息传递机制,用于启动新的Activity或者服务,或者在不同的组件间传递数据。 3. **Service**: Service是在后台运行的组件,不提供用户界面,常用于执行长时间运行的操作。 4. ...

    android-audioplayer.rar_Android AudioPlayer_android_android 播放器_

    2. **AudioFocus管理**:Android系统支持音频焦点机制,当多个应用同时尝试播放音频时,会有一个应用获得焦点并保持播放,其他应用则可能需要暂时降低音量或暂停播放。来电时,系统会自动调整音频焦点,因此开发者...

    Android-bluetooth.rar_android_android bluetooth_android 蓝牙_blu

    2. 设备发现:使用`BluetoothAdapter`的`startDiscovery()`方法进行设备扫描,扫描结果会通过`BroadcastReceiver`监听的`ACTION_DISCOVERY_FINISHED`广播接收。 3. 配对连接:找到目标设备后,调用`BluetoothDevice`...

    android的广播机制和广播的简单使用

    首先,理解Android广播机制的核心概念。Android系统会发送各种广播Intent,比如设备启动、网络状态改变等。这些Intent可以被任何注册了对应意图过滤器的BroadcastReceiver所接收。BroadcastReceiver是Android中处理...

    android广播时间处理机制

    总之,Android的广播时间处理机制是系统事件响应的重要组成部分,通过BroadcastReceiver可以监听和处理各种系统事件,包括自定义事件和系统预定义事件。理解并熟练掌握这一机制对于Android应用开发至关重要。

    Android broadcast广播机制的使用

    本文将深入探讨Android广播机制的使用,包括动态注册与静态注册两种方式。 首先,我们要理解广播的基本概念。Android广播是系统用于在整个应用环境中发送全局通知的方式。这些通知可以是系统级别的,如设备启动、...

Global site tag (gtag.js) - Google Analytics