zoukankan      html  css  js  c++  java
  • 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" />

    这样就行了。当手机网络发生变化的时候,我们就可以接收到信息了



  • 相关阅读:
    C# listbox鼠标选择改变改行颜色的另一种方便方法
    非专业码农 JAVA学习笔记 4 java继承和多态
    转:Java学习笔记之方法重载,动态方法调度和抽象类
    非专业码农 JAVA学习笔记 3 抽象、封装和类(2)
    使用bootstrap简单制作Tab切换页
    转载:CSS从大图中抠取小图完整教程(background-position应用)
    xhEditor 整理用法
    SCADA开源项目lite版本
    ImageSharp源码详解之JPEG压缩原理(3)DCT变换
    ImageSharp源码详解之JPEG压缩原理(4)熵编码
  • 原文地址:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_broad_15626142.html
Copyright © 2011-2022 走看看