CONNECTIVITY_ACTION 的 BroadcastReceiver 始终在intent.getExtras() 中返回 null

2023-11-25


我正在尝试接收来自 CONNECTIVITY_ACTION 的广播消息:

    // register BroadcastReceiver on network state changes
    final IntentFilter mIFNetwork = new IntentFilter();
    mIFNetwork.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION); //"android.net.conn.CONNECTIVITY_CHANGE"
    registerReceiver(mIRNetwork, mIFNetwork);

接收者是:

private BroadcastReceiver mIRNetwork = new BroadcastReceiver() {
    @Override
    public void onReceive(final Context context, final Intent intent) {

        android.util.Log.i(TAG,"mIRNetwork: Network State Received: "+intent.getAction());
        Bundle extras = intent.getExtras();
        if (extras!=null){
                android.util.Log.i(TAG,"mIRNetwork: ACTION_BACKGROUND_DATA_SETTING_CHANGED: "+extras.getString(ConnectivityManager.ACTION_BACKGROUND_DATA_SETTING_CHANGED));
                android.util.Log.i(TAG,"mIRNetwork: CONNECTIVITY_ACTION: "+extras.getString(ConnectivityManager.CONNECTIVITY_ACTION));
                android.util.Log.i(TAG,"mIRNetwork: EXTRA_EXTRA_INFO: "+extras.getString(ConnectivityManager.EXTRA_EXTRA_INFO));
                android.util.Log.i(TAG,"mIRNetwork: EXTRA_NO_CONNECTIVITY: "+extras.getString(ConnectivityManager.EXTRA_NO_CONNECTIVITY));
                android.util.Log.i(TAG,"mIRNetwork: EXTRA_REASON: "+extras.getString(ConnectivityManager.EXTRA_REASON));

            }
        }

简而言之,额外内容始终为空。我认为如果我失去了 WiFi 连接,我应该得到 EXTRA_NO_CONNECTIVITY (因为它是连接互联网的唯一途径)或者至少是列表中的某些内容。但没有运气。如果我断开我的 WiFi AP 接收器会收到他的消息,但没有任何附加信息。当我再次打开 WiFi 时,接收器会触发,但没有额外的信息...这是为什么?如何知道该应用程序丢失了任何网络连接?我以为就是这样。


你不能得到额外的,但你可以通过这种方式获取数据

private class ConnectivityBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager
                .EXTRA_NO_CONNECTIVITY, false);
        NetworkInfo info1 = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager
                .EXTRA_NETWORK_INFO);
        NetworkInfo info2 = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager
                .EXTRA_OTHER_NETWORK_INFO);
        String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
        boolean failOver = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);
        Log.d("MY_TAG", "onReceive(): mNetworkInfo=" + info1 + " mOtherNetworkInfo = " +
                (info2 == null ? "[none]" : info2 + " noConn=" + noConnectivity));
    }
}

欲了解更多信息,请参阅此

http://code.google.com/p/androidwisprclient/source/browse/trunk/src/com/joan/pruebas/NetworkConnectivityListener.java?r=2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CONNECTIVITY_ACTION 的 BroadcastReceiver 始终在intent.getExtras() 中返回 null 的相关文章

  • 即使我单击“运行”,Eclipse 也会运行调试模式

    Eclipse 总是在调试模式下启动我的应用程序 即使我单击常规的 运行 按钮 有任何想法吗 我发现我必须重新启动 Xoom 才能使其再次正常工作
  • 使用 ColorMatrix 调整亮度

    我正在尝试使用 ColorMatrix 调整图像的亮度 当尝试调整色相时 您可以在 Photoshop 中看到此选项 亮度和亮度也是两个不同的功能 但我不知道要更改哪些值才能实现此目的 目前我可以使用此代码更改色调 public stati
  • 如何在Android上获取当前播放曲目的路径[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想编写一个应用程序将当前播放的音乐流式传输到另一台设备 两个设备之间的连接确实有效 我还可以通过 wifi 传输一些字符串 但在获取
  • 服务如何在后台运行 - Android

    今天的采访中我被问到了这个问题 什么是服务 我对此的回答是 Service 是 Android 的基本组件 它没有 UI 并且在后台运行 Service 是否在主线程上运行 不 那么它是如何在后台运行的呢 我心里一片空白 有人可以解释一下如
  • Android Widget ID 是否持久

    在从桌面删除该 Widget 实例之前 您从操作系统收到的用户桌面上特定 Widget 实例的 Widget ID 是否一致 我找不到任何明确说明这一点的文档 但我假设这是因为文档说您可以使用小部件 id 来存储任何实例配置信息 我想将一些
  • Phonegap(应用程序错误...发生网络错误)

    我已经使用phonegap 创建了一个版本 在index html 文件中 我编写了一个简单的iframe 用于加载网站 当我从phonegap获取本地url时它就起作用了 但如果我将整个构建作为 zip 文件上传到 PhoneGap 中
  • 在 Android 中使用 awt

    我有一个绘制图表的 Java Swing 应用程序 它使用 Graphics2D 调用和 awt 对象 例如 Rectangle 等 在某些时候我可能想将其移植到 Android 上 我知道我无法在 Android 上使用 Graphics
  • 如何从Slog中查看日志

    如何查看 Slog API 生成的日志 是否有任何选项可以查看系统缓冲区中的日志 我的意思是查看我们使用的无线电缓冲区的日志 adb logcat b 无线电 而这个日志是由Android的Log类生成的 Slog API 的输出在哪里 怎
  • Android 中图像字节表示的每像素字节数

    我目前正在编写一个Android应用程序 需要在其中使用OCR 为了实现这一点 我将 Tesseract 与tesseract android tools 项目 http code google com p tesseract androi
  • 如何在 Android 中创建始终位于顶部的全屏覆盖 Activity

    我希望能够创建一个始终位于 Android 显示前面的 Activity 它不应该接收任何输入 只需将其传递到其下面的任何应用程序即可 像平视显示器之类的东西 我能够研究我需要将底层窗口类型设置为 TYPE SYSTEM ALERT 但看起
  • 如何连接到Google Play服务并加载排行榜

    我想将我的游戏与 Google Play 服务连接 我已阅读有关 Android 开发人员的文档 并尝试遵循输入数字示例 但仍然无法加载排行榜 我有导入baseGameUtils 但我使用andengine 所以我没有使用来自谷歌的exte
  • 在活动启动期间优雅地处理屏幕方向变化

    我正在尝试找到一种方法来正确处理设置活动 其中活动的方向是根据启动它的意图中的数据确定的 这是一款用户可以选择关卡的游戏 其中一些是纵向的 一些是横向的 我面临的问题是setRequestedOrientation ActivityInfo
  • 如何从画布中删除路径区域(Android)

    我需要裁剪角落ImageView 不要将它们弄圆 而是擦除每个角上的三角形 似乎唯一的方法就是覆盖onDraw方法并使用从画布上删除这些区域Path 问题是我没有纯色背景 所以我需要擦除这些区域 但不要用某种颜色填充它们 我为此使用以下代码
  • 片段活动中的 commitAllowingStateLoss()

    我的应用程序使用片段活动 它仅处于纵向模式 无法旋转屏幕 最初我使用的是commit 方法 但现在我计划不加区别地将这些更改为commitAllowingStateLoss 对于碎片活动 是否有任何理由不不加区别地执行此操作而不重新评估我使
  • 通过配置更改保留 CoroutineScope 的干净方法,无需 ViewModel

    我知道建议是在我们的 Activity 中使用 ViewModel 这样我们就可以使用它viewModelScope 由于 ViewModel 的寿命比 Activity 的寿命长 因此我们不必取消以下作业activity onDestro
  • Android - 检测视图上的双击和三次点击

    我一直在尝试构建一个可以检测双敲击和三敲击的敲击检测器 在我的努力失败后 我在网上搜索了很长时间以找到可以使用的东西 但没有运气 奇怪的是 像这样的图书馆如此稀缺 有什么帮助吗 你可以尝试这样的事情 尽管我通常建议不要使用三次点击作为一种模
  • JavaScript 点击事件在 Android 4.0.4 默认浏览器上的 Samsung Galaxy SIII 上不起作用

    我在 Android 4 0 4 上使用 Samsung Galaxy SIII 的默认浏览器时遇到了最奇怪的问题 对于以下页面 单击链接将不会触发 JavaScript 处理程序 从其中一个 div 的内容中删除单个 a 字母使它们再次工
  • 在 VideoView 开始播放之前,TextView 不会显示

    我编写了一个android应用程序 它有两个视图 TextView上方的VideoView 位于ScrollView内部 我遇到了一个问题 直到VideoView开始播放视频 TextView才显示 并且我有一个黑屏 这可能需要很长一段时间
  • Android Webview隐私浏览

    我在我的 Android 应用程序中使用 webview 从多个站点获取一些网页 我对 webview 行为有一些疑问 webview 是否存储历史记录 cookie 表单自动填充信息 如果是的话 我们可以阻止它这样做吗 如果 Webvie
  • FCM(Firebase Cloud Messaging)如何发送到所有手机?

    我创建了一个小型应用程序 能够从 FCM 控制台接收推送通知 我现在想做的是向所有使用 API 安装应用程序的 Android 手机发送推送通知 这就是我完全迷失的地方 有没有办法在不收集所有注册ID的情况下将其发送到所有手机 这是否仅适用

随机推荐

  • 如何将 const char* API 导入到 C# 中?

    给定这个 C API 声明 如何将其导入到 C 中 const char stdcall z4LLkGetKeySTD void 我已经能够做到这一点 DllImport zip4 w32 dll CallingConvention Cal
  • LINQPad - 可以从命令行运行 linqpad 脚本吗?

    有没有办法从命令提示符 无 GUI 运行 LINQPad 脚本 如果是这样 LINQPad 可以方便地编写 C 脚本并从自动构建中调用它 LinqPad 的 lprun 已经到达 http www linqpad net lprun asp
  • 想要以字符串形式获取一周中的某一天,但给出了错误的日期

    我尝试使用以下代码将日期作为字符串获取 但它返回错误的字符串 我可以用这段代码修复它吗 private String getDayOfWeek int value String day switch value case 1 day Sun
  • 除了 processmessage 之外,我还能用什么来保持程序响应?

    我有一个可以运行很长时间扫描数据库的应用程序 在此过程中 我使用 processmessage 保持程序响应 当我的进度条更新并增加时 会触发此进程消息 在大多数情况下 这工作得很好 但是当数据库变得更大时 进度条需要更长的时间才能上升 1
  • jquery:-[对象对象]错误

    我有一个validation js文件 var name name ajax type get url test jsp data name name success function msg result hide result html
  • Filebeat 可以使用多个配置文件吗?

    我在一台服务器上运行多个应用程序 我想使用 filebeat 将每个日志发送到 Logstash 但是 为了配置管理 我希望能够为每个应用程序分别向 filebeat 添加配置 Logstash 从 a 读取其配置conf d目录 据我了解
  • 参数扩展后 zsh 没有被 IFS 分割

    这是我的代码 用于循环冒号分隔的值并执行某些操作 与每个值 f IFS for arg in 1 do echo arg arg done f foo bar baz 这在大多数 POSIX 兼容的 shell 中工作得很好 dash fo
  • C 中 ASCII 字符串的压缩

    我有一些 C 代码 将 ASCII 字符串作为四字节长度存储在内存中 后跟字符串 字符串长度范围为 10 250 字节 为了减少占用 我想动态地单独压缩每个字符串 仍然存储 压缩字符串的 长度 后跟压缩字符串 我不想在比单个字符串更大的范围
  • Spring @Transactional 注解属性优先级/继承

    如果是REQUIRED当调用方方法本身是事务性的时 如果它们不同 当前方法是否会覆盖封闭的事务属性 例如 rollbackFor 插图 Class A Transactional propagation Propagation REQUIR
  • mPDF 中的自定义字体无法加载

    我正在使用 mPDF 7 x 版本并尝试遵循此文档 https mpdf github io fonts languages fonts in mpdf 7 x html 我就是无法让它发挥作用 没有错误 但字体仍然是默认的 mPDF 字体
  • T4 用于夏普架构/Northwind 问题

    我刚刚下载了 Sharparchitecture Northwind 我正在尝试 让粗脚手架开始工作 除了添加之外我什么也没改变 缺少对该类库的引用 我试着跑 ScaffoldingGeneratorCommand tt 和我遇到了以下 3
  • 如何将 nohup 输出重定向到指定文件?

    我从其他示例中尝试过的所有内容似乎都不起作用 我正在尝试使用 nohup 运行我的应用程序 但将应用程序的输出附加到文件中 我尝试过以下一些方法 这些似乎都不起作用 nohup dotnet application dll gt out l
  • WCF 中的 HttpContext

    为了使用 httpContext 我更改了 app config 并添加了
  • PHP字典类?或者替代方案?

    基本上 我正在寻找的是某种在 PHP 中实现字典的类或方法 例如 如果我正在构建一个单词解密器 假设我使用了字母 a e l p p 排列的可能性是巨大的 我如何只显示那些实际的单词 苹果 苍白等 Thanks 经典的单词查找问题可以使用以
  • 实体框架创建空迁移,但坚持认为我的模型不同

    今天是悲伤的一天 今天我看到的第一件事是 EF 异常说 自数据库创建以来 支持 DomainContext 上下文的模型已发生变化 已经接近午夜了 我仍然看到这个错误 这是我职业生涯的终结 我很确定模型中没有任何变化 但错误却出现了 我尝试
  • 如何阻止 Apache 中的特定用户代理

    我正在配置我的 Django 应用程序以通过电子邮件向我发送错误 异常 通常没有问题 但我的电子邮件托管在 Office 365 上 并且 Microsoft 似乎会自动扫描和加载电子邮件中的 URL 结果是它命中了我的 Django 应用
  • PHP 检测文件系统编码/保存具有非拉丁文件名的文件

    我需要使用 PHP 将非拉丁文件名的文件保存在文件系统上 我想让这个工作跨平台 我如何知道可以使用什么编码来写入文件 我知道许多现代文件系统都是基于 UTF 8 的 这是正确的吗 但我怀疑 Windows XP 是基于 UTF 8 的 那么
  • 为什么setContextClassLoader()方法要放在Thread上呢?

    为什么是setContextClassLoader 方法置于Thread 什么不同的线程有不同的类加载器 问题是如果我延长一个ClassLoader 加载了一些新类 到我的自定义类加载器 现在 我希望它成为上下文类加载器 所以我调用该方法T
  • AtomicInteger 等原子包类如何工作

    我读过 使用原子包类使我们能够进行线程安全 无锁编码 但我不太确定原子包类中的方法在不使用锁或任何同步关键字的情况下如何提供线程安全性 任何帮助都将不胜感激 他们使用非常低级的指令 例如比较和交换 以及来自的多种其他方法sun misc 不
  • CONNECTIVITY_ACTION 的 BroadcastReceiver 始终在intent.getExtras() 中返回 null

    我正在尝试接收来自 CONNECTIVITY ACTION 的广播消息 register BroadcastReceiver on network state changes final IntentFilter mIFNetwork ne