Broadcast-广播的接收
至于广播的意思,不再赘述,直接看它的使用
先看代码
package com.example.test1123; import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button; import android.widget.ImageView;
import android.widget.TextView; public class MainActivity extends Activity implements OnClickListener {
TextView tv;
Button bt1;
Button bt2;
Button bt3;
int i = 0;
MyBroadReceive myBroadReceive; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)findViewById(R.id.tv);
bt1 = (Button) findViewById(R.id.bt1);
bt2 = (Button) findViewById(R.id.bt2);
bt3 = (Button) findViewById(R.id.bt3);
myBroadReceive = new MyBroadReceive();
bt1.setOnClickListener(this);
} @Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()) {
case R.id.bt1:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(myBroadReceive, intentFilter);
break;
case R.id.bt2:
unregisterReceiver(myBroadReceive);
default:
break;
}
}
public class MyBroadReceive extends BroadcastReceiver{ @Override
public void onReceive(Context arg0, Intent arg1) {
tv.setText("click"+i);
i++;
}
}
里面其实就三处关键代码
一个就是定义广播接收者:
继承自
MyBroadReceive extends BroadcastReceiver
接收以后处理,实现
onReceive
另外一个就是注册广播接收
这个也是包括两个
一个就是确定你要接收广播代号(这个其实就是发送者唯一标签,类似波长)
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
另外一个就是绑定这个标签跟你定义的接收处理动作
registerReceiver(myBroadReceive, intentFilter);
最后就是广播注销,也就是不再接收广播
nregisterReceiver(myBroadReceive);
当我完成了以上步骤以后,发现还是没有作用,原来还需要最后一步,就是授权了。就像你不能无缘无故就接受到所有的广播一样。授权就在AndroidManifest.xml中添加如下
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
这样就行了。当手机网络发生变化的时候,我们就可以接收到信息了
Broadcast-广播的接收的更多相关文章
- Android开发学习—— Broadcast广播接收者
现实中:电台要发布消息,通过广播把消息广播出去,使用收音机,就可以收听广播,得知这条消息.Android中:系统在运行过程中,会产生许多事件,那么某些事件产生时,比如:电量改变.收发短信.拨打电话.屏 ...
- android Broadcast广播消息代码实现
我用的是Fragment , 发送写在一个类中,接收写在另外一个类的内部类中.代码动态实现注册. 代码: myReceiver = new zcd.netanything.MyCar.myReceiv ...
- Android Studio 单刷《第一行代码》系列 07 —— Broadcast 广播
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- angularJS 事件广播与接收[转]
路由的事件 事件这个词在前端出现的频率真是高,根本拦不住,哪都是.$route服务在路由过程中的每个阶段都会触发不同的事件,可以为这些不同的路由事件设置监听器并做出响应. 一共有4个事件用来监听路由的 ...
- 安卓开发笔记——Broadcast广播机制(实现自定义小闹钟)
什么是广播机制? 简单点来说,是一种广泛运用在程序之间的传输信息的一种方式.比如,手机电量不足10%,此时系统会发出一个通知,这就是运用到了广播机制. 广播机制的三要素: Android广播机制包含三 ...
- angularJS 事件广播与接收
发送消息: $scope.$emit(name, data) 或者 $scope.$broadcast(name, data); 接收消息: $scope.on(name,function(event ...
- Android 启动Service服务和发送Broadcast广播的常用方法
一.先说Service服务. 1.利用setAction()方法来指定启动的Service服务 Intent intent = new Intent(); intent.setAction(" ...
- Android的有序广播和无序广播(解决安卓8.0版本之后有序广播的接收问题)
前言 Google从Android8.0版本开始,对在清单文件中静态注册广播做了限制. *** 特殊广播(动态注册广播接收者) 说:有序广播和无序广播之前,咱们先来说下Android中一些特殊的广播如 ...
- Android静态注册广播无法接收的问题(8.0+版本)
如果你静态注册的广播无法接收到消息,请先检查下:你的安卓版本是不是8.0+ * 前言** Google官方声明:Beginning with Android 8.0 (API level 26), t ...
- AngularJS 事件广播与接收 $broadcast,$emit,$on 作用域间通信 封装factory服务 发布订阅
不同作用域之间通过组合使用$broadcast,$emit,$on的事件广播机制来进行通信. 一.说明 1.广播 $broadcast 说明:将事件从父级作用域传播至本作用域及子级作用域. 格式:$b ...
随机推荐
- 開始EEPlat之旅
怎样開始EEPlat之旅 EEPlat分为社区版和商业版:功能上分为企业版和PaaS版.下面为社区企业版的開始之旅. 第一步:安装project,有两种:war包和代码project.(眼下googl ...
- session和cookie详解
摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一 技术.本文将详细讨论session的工作机制并且对在Java ...
- NuGet配置代理
https://stackoverflow.com/questions/9232160/nuget-behind-proxy nuget.exe config -set http_proxy=http ...
- .vscode folder
https://stackoverflow.com/questions/32964920/should-i-commit-the-vscode-folder-to-source-control Che ...
- scikit-learn的线性回归
scikit-learn的线性回归预测Google股票 这是机器学习系列的第一篇文章. 本文将使用Python及scikit-learn的线性回归预测Google的股票走势.请千万别期望这个示例能够让 ...
- jquery tmpl插件
动态请求数据来更新页面是现在非常常用的方法,比如博客评论的分页动态加载,微博的滚动加载和定时请求加载等. 这些情况下,动态请求返回的数据一般不是已拼好的 HTML 就是 JSON 或 XML,总之不在 ...
- 分析一下jquery中的ajax操作
在web前端开发中,ajax是很重要的一项技术,用原生写起来很是麻烦,需要一大堆js代码,而到了jq里就被精简了许多,一起来看看: jquery中的ajax分为三种方式: 1.$.get(),get方 ...
- BZOJ 1577 贪心
思路:同POJ3038 http://blog.csdn.net/qq_31785871/article/details/52953214 //By SiriusRen #include <se ...
- vue+ webpack中的animate.css实现的执行多个连续的动画
1.安装 npm install animate.css 2.使用方法 入口文件App中进行引入 import animate from 'animate.css' 3.多个连续的动画 实现的效果:实 ...
- angularjs 页面缓存及动态刷新解决方案
一.准备工作 框架:angularjs ui组件库:ionic1 二.页面缓存cache 路由设置cache参数,true为缓存,false为不缓存,代码如下: angular.module('app ...