android广播在activity中接收不到

我想在activity中接收广播的wifi状态信息,但是我写的代码接收不到,求教啊~!
1.发送的广播类

```public class ConnectionChangeReceiver extends BroadcastReceiver {
Context context;
public ConnectionChangeReceiver(Context context) {
// TODO Auto-generated constructor stub
//this.wifiStateImage=imageView;
this.context=context;
int strength=getStrength(context);
//wifiStateImage.setImageLevel(strength);

}
@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    System.out.println(intent.getAction());
    System.out.println("程序进入!");
    if(intent.getAction().equals(WifiManager.RSSI_CHANGED_ACTION))
    {
        int strength=getStrength(context);
        //System.out.println("当前信号 "+strength);
        //wifiStateImage.setImageLevel(strength);
    }else if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){
        //System.out.println("网络状态改变");
        Intent intent4 = new Intent();
        intent.setAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
        intent.putExtra("NETWORK_STATE_CHANGED_ACTION", "网络状态改变");
        LocalBroadcastManager.getInstance(context).sendBroadcast(intent4);
        //System.out.println("断开连接");
        NetworkInfo info=intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
        if(info.getState().equals(NetworkInfo.State.DISCONNECTED))
        {//如果断开连接
            //wifiStateImage.setImageLevel(0);
            Intent intent3 = new Intent();
            intent.setAction(WifiManager.EXTRA_NETWORK_INFO);
            intent.putExtra("NETWORK_INFO", "断开连接");
            LocalBroadcastManager.getInstance(context).sendBroadcast(intent3);
            //System.out.println("断开连接");
        }
    }else if(intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION))
    {
        //WIFI开关
        int wifistate=intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,WifiManager.WIFI_STATE_DISABLED);
        if(wifistate==WifiManager.WIFI_STATE_DISABLED)
        {//如果关闭
            //wifiStateImage.setImageLevel(0);
            //System.out.println("wifi关闭");

            Intent intent2 = new Intent();
            intent.setAction(WifiManager.EXTRA_WIFI_STATE);
            intent.putExtra("WIFI_STATE", "wifi关闭");
            LocalBroadcastManager.getInstance(context).sendBroadcast(intent2);
        }
    }

}
public int getStrength(Context context)
{
    WifiManager wifiManager = (WifiManager) context
            .getSystemService(Context.WIFI_SERVICE);
    WifiInfo info = wifiManager.getConnectionInfo();
    if (info.getBSSID() != null) {
        int strength = WifiManager.calculateSignalLevel(info.getRssi(), 5);
        //Wifi源名称
        String ssid = info.getSSID();
        System.out.println("wifi名字= "+ssid);
        Intent intent = new Intent();
        intent.setAction("cn.abel.action.broadcast");
        intent.putExtra("Ssid", ssid);

        return strength;

    }
    return 0;
}

}

2.activity中注册广播的方法


``` @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.viewpage_main);
        mActionBar.hide();
        init();
        //listwifi();
        ConnectionChangeReceiver myBroadcastReciver = new ConnectionChangeReceiver(this);
        System.out.println("OnCreate!");
        //System.out.println("onCreateView");
        LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
        IntentFilter filter = new IntentFilter();
        filter.addAction(WifiManager.RSSI_CHANGED_ACTION);
        filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
        filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);

        localBroadcastManager.registerReceiver(myBroadcastReciver, filter);
    }

为什么我程序都没有进入ConnectionChangeReceiver类中?求大神指教~!

0

3个回答

你这是要监听wifi状态变化吗?

0
u010212704
u010212704 嗯 是的 用来监听WIFI状态的变化
大约 4 年之前 回复

你应该是要监听WIFI的状态,有设置相应的权限了吗?

0
u010212704
u010212704 权限设置了
大约 4 年之前 回复

本地广播在4.0以后就被抛弃了,肯定接受不到。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Activity里接收不到广播是怎么回事
1.Activity注册动态广播和销毁广播rnrn@Overridenprotected void onCreate(Bundle savedInstanceState) {n super.onCreate(savedInstanceState);n registerExitAppReceiver();n}rnpublic void registerExitAppReceiver()
Activity利用广播接收服务发送的数据
背景:Android开发中各个组件需要相互传递数据,我们一个Activity发送指令到服务,服务执行任务之后将数据返回给Activity我们可以用EventBus,也可以用Binder,我们也可以使用广播,当然方法不止这几种,这里我们选择广播来演示下数据的接收。一。Avtivitypublic class MainActivity extends Activity { private Inte
关于BroadCastReceiver无法接收到广播的问题
我们在做android项目的时候,很多时候会碰到自己写的广播接收器无法就收到发送的广播,这是很郁闷的事情。rn查看代码,也许是自己少写了取消注册,也许是action加入错误,但是这些都不是主要的错误,问题不大,但是如何不是这些问题呢,代码检查后发现很“完美”~!rn如果是没有经验的人,这就要费些周折了,我跟大家说下,你很可能是犯的以下的错误:rn广播接收器如果在activity中注册,则它跟随着a
在Service中发送广播被kill掉的Activity能不能收到?
不能请看下面的实践:在发送广播前,Service会先打印消息,然后再发送广播,当Activity被kill掉后,Service会自动重启,然后继续发送广播,但是此时Activity都被kill了,是收不到广播的。当Activity重启之后能继续接受广播...
Android应用接收开机广播(android.intent.action.BOOT_COMPLETED)失败的原因
Android应用接收开机广播(android.intent.action.BOOT_COMPLETED)失败的原因就在于安装应用后没有先启动。应用需要在安装后启动一次,才能正常接收开机广播。经过验证发现,系统级别的应用,即使不启动,也可以正常接收开机广播。这里的系统级别是指放在/system/app/目录下的应用。nnnnnn所以对于android3.1以后得系统版本,如果要
Android之BroadcastReceiver(接收广播消息)学习笔记(一)
Android之BroadcastReceiver(广播消息)学习笔记  BroadcastReceiver是四大组件之一,这种组件本质上就是一个全局监听器,用于监听系统全局的广播消息。这种实现,就是我们典型的观察者设计模式了,谁需要监听广播,就注册一个相应的广播即可
两个activity之间发送本地广播
发送方 private LocalBroadcastManager localBroadcastManager;……nlocalBroadcastManager = LocalBroadcastManager.getInstance(mContext);n//如果该类本身有界面的话直接用this没界面用contextn Intent intent = new Intent("
Android无法收到指定广播的问题总结
首先是应用中不能只有一个广播,必须有一个activity或者service(这种情况比较复杂参考http://www.cnblogs.com/welcoming/p/4120497.html)rnrn简单的小例子,一个是只有一个Receiver捕捉有网络改变的常驻广播,另外一个是在第一个的基础上增加了一个Activity。试验证明,第一种情况是收不到广播的! 第二种情况是可以收到广播的。所以and
Fragment无法接收从service发过来的广播
Fragment无法接收从service发过来的广播原因rn       开发中Activity中一般会集成多个Fragment,用于不同内容展示,但是有时候我们需要从service发送广播给Fragment1,但内容页面恰好为F1的时候,广播接收是没有问题的,但是当展示页面切换到fragment2的时候f1却无法接收到广播,这样就会影响一些更新操作实现,原因是:Fragment会休眠,参考Act
常驻型广播在程序退出后接收不到!!!
今天写了个Demo。手机打电话时,在号码前面自动加上预置数字。 n程序运行后,打开电话,拨号后是可以加上的。 n但是强制退出程序后,,就不可以了。 n查到Android 4.0以前,这样是可以的,但是谷歌工程师觉得不安全,于是4.0之后,应用被强制停止后,再有广播也不会启动。找到一篇解决办法的帖子,但是解决不了我这个demo。 n但是我估计除非自己写的程序,否则其他人是不会为你考虑,让你启动的=.=
Fragment和Activity之间通过广播的方式传递数据
1.管理类n/**n * 广播管理类:注册广播、注销广播、发送广播n * @author weizh_000n * @date 2016-8-29n */npublic class BroadCastManager {nn private static BroadCastManager broadCastManager = new BroadCastManager();nn public sta
Android静态广播接收不到(app之间数据传递)
在工作中,接收其它应用程序数据时,静态注册了广播,可是却接收不到消息,很是郁闷,经过看书,查阅资料,最终解决了问题,问题出在action的配置上(这个action的配置如果是低于4级是接收不到广播的,这里是个坑 com.x.x.x 。之前配置3级,就怎么都接收不到广播)。 n需求是:两个应用程序工程名称分别是:Demo2_broadcastReceiver,Demo1_intent 。 nDemo
[已解决] 收到广播无法启动activity
广播多次收到消息后失效
Android——接收广播(动态注册)
Android中的广播,类似我们现实生活中,村里面那种大广播,大喇叭,一吆喝,全村人都会得知该消息。例如app中经常有设置夜间模式和白天模式,通过点击将所有模块进行变更,这就是在发送广播,各模块接收广播后改变自己的颜色。如果说一个个获得那么多View的对象,通过对象设置其color,那么,这样显得有点繁琐且麻烦了。广播同时也是为了降低耦合,各自管理各自的控件。下面来谈一下Android广播,实现组件
Android 颜色透明度百分比与十六进制对照表
100% — FFnn99% — FCnn98% — FAnn97% — F7nn96% — F5nn95% — F2nn94% — F0nn93% — EDnn92% — EBnn91% — E8nn90% — E6nn89% — E3nn88% — E0nn87% — DEnn86% — DBnn85% — D9nn84% — D6nn83% — D4nn82% — D1nn81% — CFn...
android 收不到广播总结
android静态注册的广播接收者有时接收不到,下面总结一下常见的错误:1.检查action是否一致,这属于低级错误,一般不会犯,但为了排除万一,请检查一下action是否一致。2.当接受一些系统广播时,不要忘记加上<data android:scheme="" />,至于为什么要加上这个东东,目前还没有搞明白。3.第三种就是网上常见的在android3.1以后,出现了FLAG_INC...
动态注册广播接收者
通过broadcast(广播)的形式rn当我们的进度发生变化的时候我们发送一条广播,然后在Activity的注册广播接收器,接收到广播之后更新ProgressBar,代码如下rnpackage com.example.communication; n nimport android.app.Activity; nimport android.content.BroadcastReceiver
277_在Activity中发送接收广播
在Activity中发送接收广播rnrnrn先定义广播接收类rnrnrn    public class MyCustomReceiver extends BroadcastReceiver {rnrnrn        @Overridern        public void onReceive(Context context, Intent intent) {rn            e
Activity完成任务finish后发送广播更新fragment的bug
修改方法:在OnDestroy再发广播rn@overridernpublic void onDestroy(){rnsuper.onDestroy();rn/**在此处发广播*/rn//................rn}
Activity发广播,在Service中接收
在Activity中nn Intent intent=new Intent();n intent.putExtra("ispause", "true");n intent.setAction("ACTION_ISPAUSE");n sendBroadcast(intent); 在Service中定义BroadcastReceivernnn class IsPa
android broadcastreceiver 重复创建和无法接受消息问题
今天碰到了一个问题 就是使用广播做一个全局弹窗的重复弹窗问题 特此记录一下 填个坑 n 第一 说一下使用广播做一个全局弹窗问题 首先是注册广播 我使用的是动态注册 (细节就不都说了) 设置高优先级 尽量做到保活 这里说一下第一个要注意的地方 就是广播注册问题 重复注册 我的方法是 在注册前 先判断一下是否存在 如果存在就返回 如果不存在就new 一个 (也可以使用单例去控制一下)我就遇到了重复创建
android停止应用不能接收广播
对于android开发人员来说,可能会发生这样的情况当你强行终止一个应用程序时,该应用程序不能接受到广播(该广播时在manifest文件中进行注册的),这是为什么呢?在我的第一印象中:只要时在manifest文件中注册的广播,只要运行过一次之后无论应用是处于什么状态都应该能接收到广播的,然而在anroid3.1中对于这个问题做了详细的说明。rnrn下面是引自Android官方API说明,地址 ht
Android开发之---两个Activity之间利用广播机制更新数据
我遇到的问题,就是在MainActivity里面打开AnotherActivity去执行一些操作,相应的改变MainActivity里的一些布局或者执行一些动作rnrnrnrnMainActivity:rnrnrnrn[java] viewrn plain copyrnrnrn print?rnrnrnrnpackage jason.broadcastinsteadofhanlderdemo;  
动态广播接收
MainActivitynnnnpublic class MainActivity extends AppCompatActivity {nn // 广播的动作n public static final String ACTION = "broadcast_action";nn private DynamicReceiver receiver;n // 接收广播的意图过滤器...
Android 之任何Fragment间的广播消息接收
这种方式不用在配置文件加东西,我比较喜欢。广播注册,可以写在Activity(onCreate),也可以写在Fragment(onActivityCreated)里。LocalBroadcastManager broadcastManager = LocalBroadcastManager.getInstance(getActivity());nIntentFilter intentFilter =
Anroid接收熄屏广播消息
nBroadcastReceiver mReceiver = new BroadcastReceiver() {rn @Overridern public void onReceive(Context context, Intent intent) {rn if(Intent.ACTION_SCREEN_OFF.equals(intent.getA...
Android 在Fragment中发送和接收广播
n n n 目前做的应用中,需要嵌入广点通广告。在一个资源列表列表中,效果图如下nnnnnn列表效果图.gifnn广点通拉取部分原生广告,获取到广告的信息后,直接进行展示就可以了。n但是有一个棘手的需求是,也可以查看它的详情内页,效果图如下nnnnnn内页效果图.gifnnbutton按钮,设置点击事件,触发广点通广告下载事件。nnativeADDataRef.onE...
在服务中通知Activity来获取信息(通过广播)
#1.在onPrepared()中创建意图并发送广播。n public static final String OPEN_AUDIO = "notify_activity_to_get";nn class MyOnPreparedListener implements MediaPlayer.OnPreparedListener {n @Overriden pu...
android开机没有收到开机广播
android开机没有收到发送开机广播会导致很多问题,比如无法待机,或者进行网络升级,一堆问题。rn这个很大的原因是launcher起来后一下就跳转到另一个apk,导致PowerManagerService注册的广播接收器没有接收到BOOT_COMPLETE,导致无法待机rnrn待机的解决方法可以是另外增加对开机动画结束的监听:rn文件路径:  frameworks/base/services/j
android fragment间的广播消息发送 和 接收
这里面不选择本地广播,因为本人在开发中使用本地广播总是发送不出去,本人也很疑惑。如果哪位前辈知道原因的话麻烦指点一下1.fragment发送广播 Intent intent = new Intent(MainActivity.ACTION_ITEMVIEW_LISTCLICK);n intent.putExtra("position", position);n ...
Android8 自定义广播接收不到的问题
1. 问题的前提:本人维护的一个应用是通过按键发送一个自定义广播,然后拉起服务。原来项目开发是在Android6,将该应用安装到Android7系统上面可正常使用,但是安装到Android8上面,死活收不到广播。通过百度参考了两篇文章(文章最后加备注),做了以下总结:rn2.原因:Android8在静态广播的使用上做了一些限制具体可查看:https://developer.android.goog
在Activity中注册广播
package com.example.broadcasttext;rnrnrnimport android.app.Activity;rnimport android.content.IntentFilter;rnimport android.os.Bundle;rnimport android.view.View;rnimport android.view.View.OnClickListen
Android go 自定义静态广播接收不到的问题
1. 清单文件<manifest xmlns:android="http://schemas.android.com/apk/res/android"n xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"n package="com.android.phone"n cor...
android 在广播中接收到消息,进行界面跳转,发现跳转失效
具体的现象描述:在做小米推送的时候,在接收到小米推送的通知后,点击通知后要在接收回调的广播类中进行相应的跳转界面操作,发现跳转无效,来先直接提供解决方法:主要其实在intent按如上所示加一个flags就可以了;原因是为什么呢?比如咱们常见的界面A跳转到界面B,就能正常跳转,是由于打开B的时候,比如A、B的启动模式是默认的,B启动后放在了A所在的栈,有兴趣的同学请自行查看刚哥的Android开发艺...
安卓 广播在baseActivity中的封装
之前项目使用的是 广播来通知消息 的 代码大家都知道nnn这是一个简单的发送广播的代码片段nIntent intent = new Intent("net.jxx.action");n intent.putExtra(“type”, type);n sendBroadcast(intent);nnnnn这是一个简单的接受广播的的代码片段nIntentFilter intentFi...
通过service发送广播通知activity修改UI的内容
通过service发送广播通知activity修改UI的内容,源代码,希望对你有所帮助
如何将BroadcastReceiver中的数据传递给activity?
用接口传。定义一个接口 让 Activity实现这个接口,然后接受者调用接口里面的方法把要传递的参数传进去。效果布局文件http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent"
android3.1以上收不到广播问题
今天遇到程序A关闭后,程序B给A发送广播,但A收不到,这种情况在android3.0(包括3.0,即版本11)以下可以收到,但3.0以上就收不到了。从这篇文章找到了答案http://blog.csdn.net/alex_hx/article/details/7501374;rn原来3.0后,安装后从来没有启动过和被用户手动强制停止的应用是收不到广播的;因为系统增加了2个Flag:FLAG_INCL...
Android学习——服务Service与广播接收者BroadcastReciver
Service n1.1 服务的生命周期 n第一种:创建 - - > 开始 - - > 销毁 n新建MyService类:n/**n * Created by humour on 2015/9/24 0024.n * 服务的生命周期有两种; 1.创建 开始 销毁 2.创建,绑定 解除绑定 销毁n */npublic class MyService extends Service {n @N
安卓 广播有时候会接收不到
有时候程序不报错,而且代码看上去一切正常,能运行,但就是接收不到广播。这时候可能就是一些细节性代码的问题了。记录一下我遇到的问题。rn        1.广播的名称必须是常量,用final定义;rnrnrnrnpublic String usbstatus = "usbstatus";npublic final String action = "action.broadcast";       
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 机器学习中的数学基础 课程设计中数据库设计