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" />

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



  • 相关阅读:
    V4L2摄像头应用编程(转)
    ok6410 3.0.1内核调用V4L接口出错解决方法(转)
    Salesforce学习之路(十一)Aura组件属性<aura:attribute />
    Salesforce学习之路(九)Org的命名空间
    Salesforce学习之路(八)一次拉取多个文件或全部文件至本地
    Salesforce学习之路(十)Aura组件工作原理
    Salesforce学习之路(七)Visualforce结合Reports展示图表
    Salesforce学习之路(六)利用Visualforce Page实现页面的动态刷新功能
    Salesforce学习之路(五)role hierarchy & sharing
    Salesforce学习之路(四)利用Jenkins和Git实现Salesforce的CI/CD功能
  • 原文地址:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_broad_15626142.html
Copyright © 2011-2022 走看看