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

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



  • 相关阅读:
    NES游戏历史
    NES资料
    Spring的自动装配
    springmvc框架如何将模型数据传递给视图 也就是Model>view参数的传递
    拆分Spring的配置文件
    Springmvc框架前台传值给controller @Requestparam @RequestMapping
    SpringMVC框架传入Map集合
    SpringMVC框架使用注解编写的处理请求和映射@Controller @RequestMapping
    SpringMVC初尝试
    MVC设计模式
  • 原文地址:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_broad_15626142.html
Copyright © 2020-2023  润新知