当前位置:首页 >  开发者 >  AndroidStudio学习(三)广播

AndroidStudio学习(三)广播

动态注册监听网络变化创建intentFilter并addAction代表了监听哪个广播然后使用registerReceiver()方法将intentFilter与自己创建的监听器传进去动态注册的需要unregisterRe

动态注册监听网络变化

  • 创建intentFilter 并addAction 代表了监听哪个广播
  • 然后使用registerReceiver()方法 将intentFilter 与 自己创建的监听器 传进去
  • 动态注册的 需要unregisterReciver()
  • 权限需要在Mainfest中声明

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); 发送有序广播

  • //设置广播优先级

  • 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();
    }
}

}

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,
如果涉及侵权请联系站长邮箱:support@yingtwo.com 进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:none

最近更新

超级女英雄哪个厉害
超级女英雄哪个厉害

漫威中有数不清的超级英雄,而在我们讨论最强大的...

台电平板屏幕多少钱
台电平板屏幕多少钱

尊敬的台电用户:您好,X80HD的外屏是120...

嘉实多和昆仑哪个好
嘉实多和昆仑哪个好

你好!嘉实多机油是业界最好的,比昆仑机油贵很多...

68.C++中的const
68.C++中的const

编写程序过程中,我们有时不希望改变某个变量的值...

封神榜哪个版本游戏
封神榜哪个版本游戏

PC上的荡神志、刀剑封魔录、封神榜之英雄无敌P...

硬盘怎么清洁
硬盘怎么清洁

给笔记本电脑硬盘清理灰尘的方法如下:1、用螺丝...

410m和7670哪个好
410m和7670哪个好

首先三款笔记本的处理器都是i52450m,内存...

手机2k17乔丹怎么获得
手机2k17乔丹怎么获得

NBA2k17选择乔丹先创建MC人物,打三局大...

多态、抽象类、接口练习:愤怒的小鸟
多态、抽象类、接口练习:愤怒的小鸟

需求说明:模拟实现愤怒的小鸟,定义鸟叫的接口,...

使用taro+canvas实现微信小程序的图片分享功能
使用taro+canvas实现微信小程序的图片分享功能

业务场景二轮充电业务中,用户充电完成后在订单详...