android 增加一条广播,Android中BroadcastReceiver广播使用及注意点

Android中的广播用途很广,是四大组件之一。在android中可以看到它的各种应用,从系统发出的广播,用户自定义的广播等。

这里详细记录下广播的分类以及使用方法。

广播,是由两方面组成一个流程:广播发送者、广播接收者。

有以下场景:

当网络状态发生变化时,系统(广播发送者)会发出一条广播,这条广播的标识是:android.net.conn.CONNECTIVITY_CHANGE。当开发人员(广播接收者)也添加了这个标识,那开发人员就可以在代码中接收到这条广播。广播接收者可以是多个。

一、广播的分类,按有无顺序区分,可以分为:标准广播、有序广播。

(1)标准广播。就是多个广播接收者,接收到广播是无序的,没有规定谁先谁后。按理想状况来说,是同一时间接收到系统发出的广播。

(2)有序广播。在广播接收者,注册添加这条广播时,有增加了优先熟悉的设置。优先级高的先接收,优先级高的广播接收者,还可以控制是否将广播往下继续传递;

二、广播的注册。

根据注册方式不同有静态注册、动态注册。下面以接收系统广播为例:

(1)静态注册:

有两种方式实现:AndroidManifest.xml中注册+内部类;AndroidManifest.xml中注册+外部类。

这两种的实现都是在AndroidManifest.xml中注册,在代码中写BroadCastReceive的重载即可。

以下是,AndroidManifest.xml中注册+内部类:

package="com.example.broadcasttest_csdn"

android:versionCode="1"

android:versionName="1.0" >

android:minSdkVersion="8"

android:targetSdkVersion="18" />

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

android:name="com.example.broadcasttest_csdn.MainActivity"

android:label="@string/app_name" >

package com.example.broadcasttest_csdn;

import android.net.ConnectivityManager;

import android.net.NetworkInfo;

import android.os.Bundle;

import android.R.anim;

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.view.Menu;

import android.widget.Toast;

public class MainActivity extends Activity {

BroadcastReceiver bReceiver;

IntentFilter iFilter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

/*

iFilter=new IntentFilter();

iFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);

bReceiver=new myBroadCast();

registerReceiver(bReceiver, iFilter);

*/

}

@Override

protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

//unregisterReceiver(bReceiver);

}

public static  class myBroadCast extends BroadcastReceiver

{

@Override

public void onReceive(Context arg0, Intent arg1) {

// TODO Auto-generated method stub

ConnectivityManager connectivityManager=(ConnectivityMa

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的示例,演示如何在Android页面通过自定义广播和Toast提示来发送一条广播: 1. 首先,我们需要在AndroidManifest.xml文件注册我们的广播接收器。在<application>标签内添加以下代码: ```xml <receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="com.example.myapp.MY_BROADCAST" /> </intent-filter> </receiver> ``` 2. 接下来,我们需要创建一个自定义的广播接收器类MyBroadcastReceiver来处理接收到的广播。在新建的Java类文件添加以下代码: ```java public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 获取广播的Action String action = intent.getAction(); // 如果是我们自定义的广播 if (action.equals("com.example.myapp.MY_BROADCAST")) { // 获取广播传递的信息 String message = intent.getStringExtra("message"); // 显示Toast提示 Toast.makeText(context, "Received broadcast message: " + message, Toast.LENGTH_SHORT).show(); } } } ``` 3. 最后,在我们需要发送广播的页面添加以下代码: ```java // 创建Intent对象 Intent intent = new Intent("com.example.myapp.MY_BROADCAST"); // 添加额外的信息 intent.putExtra("message", "Hello, world!"); // 发送广播 sendBroadcast(intent); ``` 这样,当我们在页面调用sendBroadcast方法发送广播时,MyBroadcastReceiver的onReceive方法会被调用,Toast提示会显示出来。以上就是通过自定义广播和Toast提示来发送一条广播的完整代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值