Android Studio 学习(三) 广播

动态注册监听网络变化

  • 创建intentFilter 并addAction 代表了监听哪个广播
  • 然后使用registerReceiver()方法 将intentFilter 与 自己创建的监听器 传进去
  • 动态注册的 需要unregisterReciver()
  • 权限需要在Mainfest中声明 <uses-permission android :name "android.permission.ACCESS_NETWORK.STATE"/>

public class MainActivity extends AppCompatActivity {

private IntentFilter intentFilter;

private NetworkChangedReceiver networkChangedReceiver;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

intentFilter = new IntentFilter();

intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");

networkChangedReceiver = new NetworkChangedReceiver();

registerReceiver(networkChangedReceiver,intentFilter);

}

@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(networkChangedReceiver);
}
class NetworkChangedReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive (Context context,Intent intent)
    {
        ConnectivityManager connectivityManager =
                (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
        if(networkInfo!=null && networkInfo.isAvailable())
        {
            Toast.makeText(context,"good",Toast.LENGTH_LONG).show();
        }
        else
        {
            Toast.makeText(context,"bad",Toast.LENGTH_LONG).show();
        }

    }
}

}

静态注册实现开机启动

  • new-> other->broadcast receiver 手动创建广播
  • exported 允许此广播接收本程序外的广播

之后再Mainfest中声明权限

并说明要监听的广播

发送广播

  • Intent intent = new Intent("com....")
  • sendBroadcast(intent);
  • sendOrderedBroadcast(intent,null); 发送有序广播
  • <intent- filter android :priority="100">//设置广播优先级
  • abortBroadcast() 截断广播

本地广播

public class MainActivity extends AppCompatActivity {

private IntentFilter intentFilter;

private LocalReceiver localReceiver;

private LocalBroadcastManager localBroadcastManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //得到本地广播管理器的实例
    localBroadcastManager = LocalBroadcastManager.getInstance(this);

    //动态注册本地广播接收器
    intentFilter = new IntentFilter();
    intentFilter.addAction("com.example.broadcasttest.LOCAL_BROADCAST");
    localReceiver = new LocalReceiver();
    localBroadcastManager.registerReceiver(localReceiver, intentFilter);

    //发送本地广播
    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent("com.example.broadcasttest.LOCAL_BROADCAST");
            localBroadcastManager.sendBroadcast(intent);
        }
    });
}

@Override
protected void onDestroy() {
    super.onDestroy();

    //取消动态网络变化广播接收器的注册
    localBroadcastManager.unregisterReceiver(localReceiver);
}

class LocalReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "received local broadcast", Toast.LENGTH_SHORT).show();
    }
}

}

原文地址:https://www.cnblogs.com/lancelee98/p/9468119.html

时间: 2024-10-12 11:33:30

Android Studio 学习(三) 广播的相关文章

Android Studio 学习 - 基本控件的使用;Intent初学

Android Studio学习第三天. 今天主要学习 1. RadioButton.CheckBox.RatingBar.SeekBar等基础控件的使用. 结合Delphi中相类似的控件,在这些基本控件的理解和使用上暂时没碰到太多的问题.对比之下,各种监听事件与Delphi中也相差无几. 2. 使用Intent切换Activity (1)在不同的Activity之间跳转,首先要新建一个Activity. (2)创建一个新的Layout布局文件,布局文件的命名首字母用小写字母(Android S

Android Studio学习记录-第三周

3.7.1 制作Nine-Patch图片 1.什么是.9.png格式 .9.png格式的图片可以在安卓平台指定拉伸区域,防止图片失真,一般用作背景图. 2.前提 去sdk的tools目录下面找draw9patch.bat文件,但是没找到. 3.处理方式 在android studio中生成 把要编辑的图片复制到资源文件中: 选中图片右键: 选择 create 9-path 就会在同目录下面生成相同文件名并且后缀是.9.png图片,这样就可以愉快的制作了. 4.注意 删除已经有替代品的并且不需要的

Android Studio学习笔记

转:http://stormzhang.com/devtools/2014/11/25/android-studio-tutorial1 背景 相信大家对Android Studio已经不陌生了,Android Studio是Google于2013 I/O大会针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Google的更新速度也很快,明显能感觉到这是Android开发的未来,那么我们还有什么理由不去拥抱未来呢? 虽然推出了很久,但是国内貌似普及的程度并不高,鉴于很多朋友

Android Studio 学习 - 程序安装

痛定思痛,从今天开始专心学习AndriodStudio.希望以此为契机,把Java学扎实.更希望自己能坚持下去,不要半途而废. 记录一些日常的工作以及碰到的问题,权当勉励自己.荀子曰:吾尝终日而思矣,不知须臾之所学也:吾尝跂而望矣,不如登高之博见也.锲而舍之,朽木不折:锲而不舍,金石可镂. 一.软件安装 一波三折的终于搞定了Android Studio的安装,SDK的下载. 过程中借鉴了网上很多前辈们的经验,记录一些个人感觉很有价值的链接: 1. http://www.androiddevtoo

android studio学习----通过github的URL怎么导入新的工程

这一切的前提是你装了git,有了github帐号,之后就很简单,但是导入之后交给android studio 也会发生各种编译错误,这个时候就需要自己去一一解决了,主要还是  引用依赖版本的问题 第一步: 你的电脑上首先要有git和AndroidStudio,没有的话赶紧下去吧,之前我的博客也有开发工具,这里我就当你有了,直接开始. 第二步:打开studio找到设置页面 将你安装的git路径放到第二步中,点击ok. 第三步:你要有一个github 的账号,这里我就当你有了,接下来进行下面的配置 

android studio学习---快捷键

快捷键学习  TIPS: 1.异常代码块  或者自定义代码块结构  Ctrl+Alt+T  或者   File | Settings | File and Code Templates When you want to catch exceptions thrown by some code fragment, select it in the editor, press Ctrl+Alt+T (Code | Surround With) and choose try / catch. The

android studio学习---实时布局(Live Layout)

Android Studio中的实时布局功能允许大家在无需将应用程序运行在设备或者模拟器中的前提下,直接预览应用的用户界面.实时布局是一款极为强大的工具,能够帮助开发者节约大量时间.在实时布局的帮助下,查看应用程序用户界面的任务变得轻松而且快捷. 要使用实时布局,我们需要双击对应XML布局文件并选择工作区下方的“Text”标签.接下来选择工作区右侧的“Preview”标签来预览当前布局.我们对XML布局作出的任何变更都会直接反映在右侧的预览窗口当中.大家可以查看下面这幅截图来深入理解这项功能.

Android Studio 学习笔记(1)

最近从Eclipse转到Android Studio IDE,很多东西需要学习,本文是个记录. 项目结构 在Anroid Studio 中,一个Project 包括多个Module,每个Module下包含的Manifest.xml也是起效的(以前在Eclipse下不起效) Eclipse 里的 library 可以对应 Anrdroid Studio 里的module . 调试 在eclipse中,我们经常使用 run as debug...方式(以debug模式)启动,或者使用ddms里找到

android studio学习----调试---断点调试

Android Studio调试其实也非常方便,一般问题直接通过AS的DDMS的Logcat就可以搞定.AS支持类似Eclipse的DDMS的所有功能.这里要说的是疑难问题的调试方式,即断点调试. 首先先编译好要调试的程序. 如上图2所示在行号处点击设置断点.然后如1所示点击开启调试会话. 如上图所示,IDE下方出现Debug视图,1指向的是现在调试程序停留的代码行,2区域是程序的方法调用栈区.在这个区域中显示了程序执行到断点处所调用过的所用方法,越下面的方法被调用的越早.由此顺序想必有些And