package demo.broadcast;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
/**
* 实现一个广播和广播接收器比较简单
* 一、构建Intent对象
* 二、调用sendBroadcast()发出一个系统级别的广播
* 三、事件的接收是通过自定义一个类,通过继承BroadcastReceiver,并实现其onReceive()方法来实现的
* 四、注册你定义的广播接收器,在AndroidManifest.xml中注册或者在代码中注册
* @author Administrator
*
*/
public class MainActivity extends Activity {
//首先需要一个Action常量,任意了啦,就是相当于一个唯一的标识符
//这里关于Action的理解,可以这样:
//Action就相当于一种符号。比如几个军队在作战,其中A军队发出一种信号,
//其中B军队和A军队是一方(就是B军队可以正确识别这种信号),所以B军队看到
//信号后,对信号进行解析,根据信号的指示,执行任务。而另一方的C军队,不知道这种信号
//所以,只能置之不理。
//这里,信号就相当于Action,起到过滤的作用。军队B就相当于该Action的一个接受者,是一个广播接收者
private static final String ACTION_DEMO_BROADCAST = "demo.broadcast.action.ACTION_DEMO_BROADCAST";
private Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button)this.findViewById(R.id.btn_demo);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent();
//关于Action的理解可以看上面
intent.setAction(ACTION_DEMO_BROADCAST);
intent.putExtra("msg", "我发送了广播,注意查收!");
MainActivity.this.sendBroadcast(intent);
}
});
}
}
package demo.broadcast;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
/**
* 自定义一个广播接收器
* 在onReceive()方法中处理
* @author Administrator
*
*/
public class DemoReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//从Intent中接收信息
String msg = intent.getStringExtra("msg");
Toast.makeText(context, "新消息:"+msg, Toast.LENGTH_LONG).show();
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="demo.broadcast"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
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 android:name="DemoReceiver">
<intent-filter>
<action android:name="demo.broadcast.action.ACTION_DEMO_BROADCAST" />
<category android:name = "android.intent.category.LAUNCHER" />
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="8" />
</manifest>
<?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/btn_demo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="测试广播事件" />
</LinearLayout>
分享到:
相关推荐
BroadcastReceiver(广播接收器)是接收广播的关键类,让我们深入探讨一下Broadcast实例在Android开发中的应用及其相关知识点。 首先,BroadcastReceiver的工作原理是基于Intent的发布和订阅模式。当一个广播意图被...
本实例将深入探讨如何在Android中使用`sendBroadcast`, `sendOrderedBroadcast`以及`sendStickyBroadcast`三种方法来发送广播。 一、sendBroadcast `sendBroadcast(Intent intent)`是最常见的方式,用于发送一个非...
在"broadcast实例工程"中,我们通常会看到如何创建、注册和使用BroadcastReceiver来实现不同组件间的通信。 在"android broadcast"这一主题下,我们可以深入探讨以下几个关键知识点: 1. **BroadcastReceiver的...
下面我们将深入探讨Android Broadcast的工作原理、类型、注册方式以及如何在实际开发中创建和使用Broadcast实例。 一、Broadcast机制简介 Broadcast广播是Android系统中的一种全局通知机制,用于在整个系统中传播...
在这个“broadcast_Android 广播机制broadcast用法实例.rar”压缩包中,我们很可能会找到关于如何使用BroadcastReceiver的示例代码和教程。 首先,广播分为两种类型:显式广播和隐式广播。显式广播是直接指定接收者...
当广播到达时,系统会创建BroadcastReceiver实例并调用onReceive()方法,处理完广播后,BroadcastReceiver即被销毁。因此,所有广播的处理逻辑应在onReceive()方法内完成,因为它不会多次调用,且不能进行耗时操作,...
每次广播触发时,系统会创建BroadcastReceiver实例并调用`onReceive()`方法。如果`onReceive()`在10秒内未完成执行,Android系统会认为广播接收者阻塞了,可能导致系统性能问题。 7. **拦截和处理广播**: 对于...
这篇博客"Android实例四:BroadCast_Receiver"将深入探讨如何在实际项目中使用BroadcastReceiver。 首先,我们需要了解BroadcastReceiver的基本概念。BroadcastReceiver是一个抽象类,用于接收并处理系统或应用广播...
- **静态注册**:在AndroidManifest.xml中声明BroadcastReceiver,这样系统在启动时就会自动创建Receiver实例,广播始终有效,但可能会增加内存占用。 - **动态注册**:在代码中注册BroadcastReceiver,通常在需要...
Android Broadcast 静态注册Demo代码
创建一个`QUdpSocket`实例后,我们可以调用`bind()`函数将其绑定到特定的IP地址和端口,这样就可以接收发送到该地址和端口的数据报。同时,`writeDatagram()`函数用于向指定的IP地址和端口发送数据报。 接下来,`...
然后,在需要接收广播的活动或服务中,通过`registerReceiver()`方法进行注册,传入创建的广播接收器实例和感兴趣的IntentFilter。例如: ```java IntentFilter filter = new IntentFilter(); filter.addAction(...
这个例子主要研究Android broadcast广播机制的实现,以一个电池监测及广播通知为例,介绍了实现broadcast的过程:大致的思路是:注册一个系统 BroadcastReceiver,作为访问电池计量之用,如果捕捉到的action是ACTION...
- 动态注册:在运行时通过Context的registerReceiver()方法进行注册,需要传入BroadcastReceiver实例和一个IntentFilter对象。动态注册的BroadcastReceiver仅在注册后有效,当应用退出或者unregisterReceiver()后,...
静态注册是在AndroidManifest.xml文件中进行,系统启动时就会创建Broadcast Receiver实例;动态注册则在代码运行时完成,需要手动创建和注册,优点是可以随时注册和注销,但缺点是应用退出后就无法接收到广播。 接...
首先,创建一个DatagramSocket实例,并绑定到特定的端口上。然后,创建一个`java.net.DatagramPacket`对象,用于存储接收到的数据。通过调用DatagramSocket的`receive()`方法,可以接收来自其他设备的UDP数据包。 ...
udpClient.Connect(IPAddress.Broadcast, 1434); byte[] requestBytes = Encoding.ASCII.GetBytes("0100000000000000"); udpClient.Send(requestBytes, requestBytes.Length); IPEndPoint remoteEndPoint = ...
SendMessage(HWND_BROADCAST, WM_COPYDATA, (WPARAM)hInstance, (LPARAM)&cds); ``` 5. **接收并处理消息**:在已运行的程序中,我们需要监听`WM_COPYDATA`消息,根据接收到的数据做出相应的处理。 ```cpp ...
在这些源码中,你可以看到如何与Android SDK交互,包括Activity、Intent、Broadcast Receiver、Service等核心组件的使用。 其次,Android创意实例主要体现在UI设计和用户体验上。源码中可能包含各种自定义View的...
(1)基本网络编程实例 Winsock实现网络聊天室【\chap1\ChatRoom(Winsock)】 ...网络多播程序【\Appendix\BroadCast】 界面美观的文字聊天程序【\Appendix\Chat】 语音电话【\Appendix\PhoneCall】