首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当Android/GoogleTV与WAN断开连接时收听

当Android/GoogleTV与WAN断开连接时收听
EN

Stack Overflow用户
提问于 2013-07-30 02:29:19
回答 1查看 263关注 0票数 0

我要监听GoogleTV设备断开连接的时间,然后显示弹出警告。

我认为我已经通过下面的代码实现了这一点,但随后发现,只有当设备的以太网电缆断开连接时才会警告我断开连接:即LAN。当路由器的输入以太网电缆断开时,我不会收到警报:即WAN。

我发现,当断开LAN电缆时,GTV设备将失去其IP地址,但当断开WAN电缆时,GTV设备仍将具有IP地址-这就是为什么我没有收到应用程序断开连接的警报的原因。

那么,当GoogleTV设备不再连接到广域网时,我如何检查?要做到这一点,我需要在下面的代码中添加什么?

代码语言:javascript
运行
AI代码解释
复制
startListeningToNetwork();
private void startListeningToNetwork() {
   if(_networkStateReceiver == null){
      //Listen for when the network changes. If app loses internet before webView has loaded, then display error message.
      _networkStateReceiver = new BroadcastReceiver() {
          @Override
          public void onReceive(Context context, Intent intent) {
            if(!isConnected()){
              showNetworkErrorDialog();
            } else {
                      closeNetworkError();
            }
          }

      };


      IntentFilter networkFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); 

      getActivity().registerReceiver(_networkStateReceiver, networkFilter);
   }

}
private boolean isConnected() {
    ConnectivityManager cm = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
    Toast.makeText(getActivity(), "isConnected? " + (cm.getActiveNetworkInfo() != null  && cm.getActiveNetworkInfo().isConnected()) , Toast.LENGTH_SHORT).show();
    return (cm.getActiveNetworkInfo() != null  && cm.getActiveNetworkInfo().isConnected());
}
EN

回答 1

Stack Overflow用户

发布于 2013-07-31 15:24:38

为BroadcastReceiver注册CONNECTIVITY_ACTION

  1. 您可以尝试以下两个选项:

代码语言:javascript
运行
AI代码解释
复制
- Use the `Context` that `BroadcastReceiver` is passed with to get the `ConnectivityManager`  and get current info about any active network
- Use parcerable [extras](http://developer.android.com/reference/android/net/ConnectivityManager.html#EXTRA_EXTRA_INFO) sent to the `Intent`

  1. 获取从点1

中的任一选项获取的活动网络的详细状态

公共类LANConnectionReceiver扩展了BroadcastReceiver{

代码语言:javascript
运行
AI代码解释
复制
    @Override
    public void onReceive(Context context, Intent i) {

            NetworkInfo info = (NetworkInfo)i.getParcelableExtra(ConnectivityManager.EXTRA_EXTRA_INFO);
            /*or use the context to get the connection manager whenever the broadcast is sent to this receiver 
             * ConnectivityManager conmng = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
                NetworkInfo activeNetwork = conmng.getActiveNetworkInfo();
             */
            Log.d("ConnectionReceiver", "State=" + info.getDetailedState());
            if(info.getType() ==ConnectivityManager.TYPE_ETHERNET){ //optional, we are interested in case when it looses WAN 
                switch(info.getDetailedState()){
                case AUTHENTICATING:
                    break;
                case BLOCKED:
                    break;
                case CAPTIVE_PORTAL_CHECK:
                    break;
                case CONNECTED:
                    break;
                case CONNECTING:
                    break;
                case DISCONNECTED:
                    break;
                case DISCONNECTING:
                    break;
                case FAILED:
                    break;
                case IDLE:
                    break;
                case OBTAINING_IPADDR:
                    break;
                case SCANNING:
                    break;
                case SUSPENDED:
                    break;
                case VERIFYING_POOR_LINK:
                    break;
                default:
                    break;

                }
            }
    }



}

注意,我们对网络的类型不感兴趣,因为我们感兴趣的是电视是否可以访问广域网,这就是为什么我将条件info.getType()==ConnectivityManager.TYPE_ETHERNET设置为可选的原因。

编辑:在上面的评论中,我提到了在不阻止应用程序的情况下递归检查网络。

代码语言:javascript
运行
AI代码解释
复制
public void listenForConnection(final Context c, final Handler h){
                h.postAtFrontOfQueue(new Runnable(){

                    @Override
                    public void run() {
                         ConnectivityManager cm = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);
                        NetworkInfo networkInfo = cm.getActiveNetworkInfo();
                        if(networkInfo!=null && networkInfo.isConnectedOrConnecting()){
                            Intent i = new Intent(ConnectivityManager.CONNECTIVITY_ACTION);
                            i.putExtra(ConnectivityManager.EXTRA_NETWORK_TYPE, networkInfo.getType());
                            i.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
                            i.putExtra(ConnectivityManager.EXTRA_IS_FAILOVER, networkInfo.isFailover());
                            i.putExtra("MY_CUSTOM_KEY_HAS_WAN", true);
                            c.sendBroadcast(i);
                        }else {
                            //do something else
                        }
                        h.postDelayed(this, 100);
                    }});
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17937366

复制
相关文章
PPC
PPC,就是Pocket PC(简称PPC),是基于微软的Windows Mobile操作系统的一种掌上电脑。
bisal
2019/01/29
1K0
centos7几种版本x86_64、aarch64、armhfp、i386、power9、ppc64、ppc64el简单说明
一直用的x86_64的系统,今天去找一个ARM架构的centos,看到这么多版本,一脸懵逼,通过sc大概总结了一点说明,请参考:
全栈程序员站长
2022/11/02
12.5K0
PPC上的Python IDE
        在[url]http://pythonce.sourceforge.net/Wikka/VensterCE[/url]看到Pythonce里的另一套界面库。安装比较简单,从[url]http://sourceforge.net/projects/vensterce[/url]上,下载VensterCE最新的压缩包,解压,将里面的venster目录复制到Python安装目录的Lib\里面就行。VensterCE需要ctypes包。
py3study
2020/01/07
6180
计划日历-PPC Planning Calendar(上)
计划日历,Planning Calendar,就是在工厂级为物料需求计划定义了灵活的计划/采购周期。
老铁一起学
2021/02/22
1.7K0
计划日历-PPC Planning Calendar(上)
计划日历-PPC Planning Calendar(下)
上一篇我们一起学习了计划日历-计划日历-PPC Planning Calendar(上),在上篇中对计算规则1进行示例说明。(计算规则说明参见上篇)。
老铁一起学
2021/02/22
1.1K0
计划日历-PPC Planning Calendar(下)
WM系统PPC设备隐蔽内存分析
使用过windows mobile手机的人应该都知道RAM这个概念。RAM就好比电脑的内存,给手机运行程序提供空间。但是很多人都会有这样的疑问:为什么打开系统设置里的内存选项却显示总的程序内存小于机器的标称内存?
reizhi
2022/09/26
4100
WM系统PPC设备隐蔽内存分析
PPC深度学习与站点优化之间的关系
深度学习是每个行业都需要的一个过程,它使得你在行业中,可以快速的累积核心技术,并针对特定的问题,提供多样化的解决方案。
蝙蝠侠IT
2020/11/27
4450
PPC深度学习与站点优化之间的关系
为什么做PPC时,跳出率会很高?
在我们做PPC竞价排名的时候,偶尔会遇到这样一种情况,那就是目标着陆页,出现较高的跳出率,但我们非常明确PPC可是真金白银,花钱投放出来的广告,理论上,所带来的流量,应该是特别精准的,并且有一定的页面停留时间与站内询盘。
蝙蝠侠IT
2021/05/08
5180
为什么做PPC时,跳出率会很高?
ABB PPC902CE101 带有速度可调的传送带
包装设施可以利用 BRIXX® 的模块化和易于设置的特点,成为一条超灵活的包装线。设施可以为一项包装任务设置 BRIXX® 配置,例如码垛,然后快速重新配置以使其能够完成不同类型的任务,例如贴标签。这种模块化的“超能力”意味着包装设施可以为其客户提供更多服务并快速处理意外请求。
用户10534454
2023/05/05
2200
ABB PPC902CE101  带有速度可调的传送带
cocos2dx lua热更新_cocos2d js
sudo ln -sf luajit-2.1.0-beta3 /usr/local/bin/luajit
全栈程序员站长
2022/11/08
1.5K0
借鉴B2B营销方式提升高校PPC营销效果
插播:关注“互联网数据官”回复“PPT”下载宋星老师数字营销的策略最新演讲PPT。 本文长度为2140字,预估阅读时间5分钟。 我们今天要向大家分享关于借鉴B2B营销方式提升高校PPC营销效果 虽然高
iCDO互联网数据官
2018/03/05
8940
借鉴B2B营销方式提升高校PPC营销效果
linux系统奔溃之vmcore:kdump 的亲密战友 crash
crash 是目前广泛使用的 linux 内核崩溃转储文件的分析工具,掌握 crash 的使用技巧,对于分析定位内核崩溃的问题,有着非常重要的作用。本文首先介绍了 crash 的基本概念和安装方法,其次详细介绍了如何使用 crash 工具分析内核崩溃转储文件,包括各种常用调试命令的使用方法,最后以几个实际工作中遇到的真实案例向读者展示了 crash 的强大功能。在这篇文章中,既有详细的工具使用方法,又有丰富的实际案例分析,相信您读过以后定会受益匪浅。
233333
2020/06/16
11.4K0
mariadb安装教程linux,在Ubuntu 18.04系统上安装MariaDB 10.4的步骤「建议收藏」
以下介绍在Ubuntu 18.04系统上安装MariaDB 10.4,也适用在Ubuntu 16.04系统上,我们可以从APT存储库在Ubuntu上安装MariaDB 10.4。MariaDB是MySQL的直接替代品,具有更多功能,新存储引擎和更好的性能。在写本文时,MariaDB 10.4可在Beta版本中使用了,如果你想使用正式版本,就用MariaDB 10.3。
全栈程序员站长
2022/09/01
1.3K0
WAS 8.5在AIX上无法启动图形化概要管理工具WCT或PMT之解 博客分类: IBM WebSphere Java IBM WebSp
问题描述:WAS 8.5在AIX上因缺少相应的组件包,而无法启动图形化概要管理工具WCT或PMT
阿敏总司令
2019/02/28
1.7K0
WAS 8.5在AIX上无法启动图形化概要管理工具WCT或PMT之解
            
    
    博客分类: IBM WebSphere Java 
        IBM WebSp
Ubuntu 17.04(Zesty Zapus)正式版发布
今天,2017 年 4 月 13 日,Canonical 官方发布了 Ubuntu 17.04(Zesty Zapus)的最终版。自从去年十月发布 Ubuntu 16.10(Yakkety Yak)起,它已经开发了将近 6 个月。
Debian中国
2018/12/20
7420
mold源码阅读 其零 main
我们从main函数的开始,大致讲一下都做了哪些事情。之后再从每个流程中的具体实现开始阅读(如果我记得的话会回头在这里补上对应的链接),或者会以解决某些问题为线索写一篇,比如说某一些常见的参数具体在mold中怎么生效的,比如说whole_archive这种。为保证两部分文章内容的连贯性,内容不可避免会有一定重叠。
AkemiHomura
2023/04/07
4470
mold源码阅读 其零 main
docker 安全
由于容器运行在主机上,且与主机共用一套内核,因此在容器的安全使用上会涉及到容器本身以及主机的安全加固,如针对系统调用,系统资源,远程访问等都需要进行安全方面的考量。
charlieroro
2020/03/24
1.1K0
基于发行版本内核打造自己的内核
Linux当中最核心的部分就是内核,这个也是最基础,最可能被忽视的一部分,随便找一个刚入职的运维,学习个两三天,网上找些资料也能能自己安装编译内核了,很多运维的初期培训就是做的这些学习,为什么在网上已经有这么多文章的情况下,还要写一篇关于内核的文章,这是因为,我想讲的是如何去选择内核 一般来说,找内核的时候都会去下面这个网站进行选择
用户2772802
2018/08/06
7910
基于发行版本内核打造自己的内核
使用buildx构建多架构的镜像
最近项目需要支持ARM平台,所以之前使用的那些镜像需要重新构建。构建多架构镜像的方法有很多,这里列出个人觉得最简单的一种方法。
Markgogogo
2022/06/13
1.1K0
使用buildx构建多架构的镜像
Node.js 10.0.0 正式版发布 大量改进和修复
Node.js 10.0.0 正式发布,这是自 Node.js Foundation 开展以来的第七个主要版本,并将在 2018 年 10 月成为下一个 LTS 分支。
Debian中国
2018/12/21
1K0

相似问题

无法连接到数据库:不允许主机‘XX.XX’连接到此MySQL服务器

18

不允许主机‘’连接到此MySQL服务器

10

主机xxxx不允许连接到此MySQL服务器。

12

不允许主机x连接到此mysql服务器。

11

不允许主机'localhost‘连接到此MySQL服务器

42
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文