首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Android -检查我的应用程序的其他用户是否连接到互联网的最佳方法是什么?

Android -检查我的应用程序的其他用户是否连接到互联网的最佳方法是什么?
EN

Stack Overflow用户
提问于 2019-08-08 13:40:51
回答 1查看 35关注 0票数 0

我正在为android开发一个社交网络应用程序,在其中我想检查另一个人,他的个人资料正在被查看(并安装了我的应用程序)是否连接到互联网。他可能在运行我的应用程序,也可能没有,这都无关紧要。我唯一关心的是互联网的连通性。如果另一个人没有连接到互联网,则会向用户显示一个消息框,告知该人当前不可用。

所以我有两个问题:

1)是否可以检查对方的网络连接?

2)如果是,最好的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2019-08-08 14:05:28

你可以这样做

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
InternetChecker.canReachServer(URL_SERVER, 10000, 10000, reachable -> {
                if(reachable){
                    //connected
                }
                else{
                    //no connected
                }
            });


public class InternetChecker {

public static void canReachServer(String Url, int dnsTimeout, int requestTimeout, Callback<Boolean> result) {
    httpThread.run(() -> {
        InetAddress ip = ResolveHost(Url, dnsTimeout);
        if (ip == null) {
            Log.d("INTERNET STEP 1", "FAILED");
            result.callback(false);
        } else {
            Log.d("INTERNET STEP 1", "SUCCESS: " + ip.getHostAddress());
            OkHttpClient client = new OkHttpClient.Builder()
                    .connectTimeout(requestTimeout, TimeUnit.MILLISECONDS)
                    .writeTimeout(requestTimeout, TimeUnit.MILLISECONDS)
                    .readTimeout(requestTimeout, TimeUnit.MILLISECONDS)
                    .build();

            Request request = new Request.Builder()
                    .url(Url)
                    .head()
                    .build();

            try {
                client.newCall(request).execute();
            } catch (IOException e) {
                Log.d("INTERNET STEP 2", "FAILED: " + e.getMessage());
                result.callback(false);
                return;
            }

            Log.d("INTERNET STEP 2", "SUCCESS");
            result.callback(true);
        }

    });
}

public static InetAddress ResolveHost(String sUrl, int timeout) {

    //Run the DNS resolve method manually to be able to time it out.
    URL url;
    try {
        url = new URL(sUrl);
    } catch (MalformedURLException e) {
        return null;
    }
    //Resolve the host IP
    DNSResolver dnsRes = new DNSResolver(url.getHost());
    Thread t = new Thread(dnsRes);
    t.start();
    try {
        t.join((long) (timeout));
    } catch (InterruptedException e) {
        //DNS interrupted
        return null;
    }
    InetAddress inetAddr = dnsRes.get();
    if (inetAddr == null) {
        //DNS timed out.
        return null;
    }
    //DNS resolved.
    return dnsRes.inetAddr;
}

public static class DNSResolver implements Runnable {
    private String domain;
    private InetAddress inetAddr;

    public DNSResolver(String domain) {
        this.domain = domain;
    }

    public void run() {
        try {
            InetAddress addr = InetAddress.getByName(domain);
            set(addr);
        } catch (UnknownHostException e) {
        }
    }

    public synchronized void set(InetAddress inetAddr) {
        this.inetAddr = inetAddr;
    }

    public synchronized InetAddress get() {
        return inetAddr;
    }
}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57414017

复制
相关文章
React Native悬浮按钮组件
因为用到了react-native-vector-icons图标组件,需要做下link。如果你项目中已经使用了react-native-vector-icons,那就不需要这步了。
forrest23
2018/08/03
2.9K0
React Native悬浮按钮组件
React Native按钮详解|Touchable系列组件使用详解
尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://www.devio.org) 在做App开发过程中离不了的需要用户交互,说到交互,我们首先会想到的就是按钮了,在React Native中没有专门的按钮组件。 为了能让视图能够响应用的的点击事件,我们需要借助Touchablexxx组件,来包裹我们的视图。为什么说是Touchablexxx呢,因为它不只是一个组件,而是一组组件,一下四个组件都可以用来包裹视图来响应用户的点击事件。 TouchableWithoutFeedback:
CrazyCodeBoy
2018/05/07
4.2K0
React Native按钮详解|Touchable系列组件使用详解
react-native 集成极光推送jpush-react-native时的小问题
android的一个报错 ... set canOverrideExistingModule=true 解决: 问题是在/android/app/src/java/.../MainApplication.java的getPackages()中重复引用了某个package,删除掉重复内容即可 新版中添加notifyJSDidLoad方法报错 如果不设平台,在ios里会报notifyJSDidLoad undefined错误 如果使用官方例子notifyJSDidLoad的代码,android会报cb方法und
mcq
2018/06/20
2.1K0
React Native如何消除启动时白屏
在RN 项目启动之后有一个短暂的白屏,调试阶段白屏的时间较长,大概3-5秒,打正式包后这个白屏时间会大大缩短,大多时候都是一闪而过,所以称之为“闪白”。 其实解决的方案也有很多,这里做一个简单的
xiangzhihong
2018/02/06
2K0
React Native如何消除启动时白屏
React Native如何消除启动时白屏
在RN 项目启动之后有一个短暂的白屏,调试阶段白屏的时间较长,大概3-5秒,打正式包后这个白屏时间会大大缩短,大多时候都是一闪而过,所以称之为“闪白”。 其实解决的方案也有很多,这里做一个简单的总结
xiangzhihong
2018/01/26
1.3K0
求数组满足条件个数
System.out.println("数组中大于50的有"+max+"个,小于50的有"+min+"个");
算法与编程之美
2023/01/03
3680
求数组满足条件个数
react native
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
sofu456
2019/12/10
1.6K0
react native
iOS React Native 混合开发集成React Native
   有时候我们并不是需要全部使用React Native,我们想和原生混合开发,那我们应该怎么办呢。
星宇大前端
2019/01/15
2K0
【React Native】react-native-scrollable-tab-view
一张跟内容完全关系的图 介绍 一个带有TabBar和可切换页面的控件。 在Android中可以看成是ViewPager和TabLayout的结合。 实际效果的话,就下面这样了。 官方的动图 你可以选择直接上官方Github了解怎么使用,或者继续往下看我装逼。 添加到项目中 npm install react-native-scrollable-tab-view --save 使用 基本用法 用tabLabel指定Tab名称 render() { return ( <S
Gavin-ZYX
2018/05/18
2.7K0
【React-Native】React-Native组件样式合集
最近在阅读RN的文档,但有一点深感遗憾的是——官方对绝大多数RN组件没有用Gif图或者静态图的方式呈现给大家。
啦啦啦321
2022/03/30
2.3K0
【React-Native】React-Native组件样式合集
React Native打包
前面写了关于React的一系列入门章:http://lib.csdn.net/xiangzhihong8/5375/chart/React%20Native 欢迎大家吐槽,今天要说的是在A
xiangzhihong
2018/02/06
1.8K0
React Native打包
react native入门
React Native Tools React-Native/React/Redux snippets for es6/es7 Prettier - Code formatter Material Icon Theme
lilugirl
2020/11/03
1.3K0
React Native 初探
不知从何时起,移动端App开发,采用Native还是使用Web的争论不绝于耳。二者的优缺点不再赘述。Web App当然是开发者期待的理想结果,但是由于Native App在用户体验上的绝对碾压,大部分移动端App还是采用Native的方式,少数架构复杂、对Web依赖较多的App,会采用一种称为Hybrid(Web + Native)的开发方式,在iOS上,Native通过-[UIWebView stringByEvaluatingJavaScriptFromString:]调用Web,而Web则是通过设置W
rectinajh
2018/05/17
2.1K0
react-native
最近一直在做app的业务, 那么在选择采用什么去做app的时候, 可以考虑的有hybrid, react-native, flutter, 我首先没有考虑的是混合开发, 混合开发可能是对我而言开发效率最快的。由于我个人原因我没有选择。 那么flutter我考虑到, 它的年龄还太小, 社区相对于react-native不是那么的繁荣, 而且我看了下它的语法(dart), 感觉跟js没有什么关系。综上我最终选择了react-native, 但是万万没有想到, 有那么多的坑。关于坑的事情, 先按下不表。
用户9298250
2021/12/29
1.1K0
React Native打包
前面写了关于React的一系列入门章:http://lib.csdn.net/xiangzhihong8/5375/chart/React%20Native 欢迎大家吐槽,今天要说的是在Andro
xiangzhihong
2018/01/26
2.3K0
网站建设需要满足的条件
如今,网站建设随处可见。它根据现代人已经越来越离不开网络,为大家提供无线的便利。为了让人们感到更加方便,最近的移动网站正如火如荼地进行着,很多企业都察觉到了这样的趋势,所以都在努力拓展这方面的服务。但是想要做得好,就不是每个人都能做到的了。那么优秀的手机网站建设应该要满足哪些条件呢?
我的昵称_
2018/07/13
2.2K1
网站建设需要满足的条件
React Native Upgrade
文中的代码和图片我都反复检查过了,基本上没有泄露公司的重要信息的数据,如若发现有泄露的话请立即告知我 ;-)
宅男潇涧
2018/08/01
1.5K0
React Native Upgrade
React Native ART
Android自带ART,不用导入。iOS要使用需要使用xcode打开react native 的ios目录,
conanma
2021/11/02
1.3K0
点击加载更多

相似问题

React Native Elements ButtonGroup -无法将按钮分组到列中

130

在React Native ButtonGroup中选择按钮

226

条件满足时启用按钮

14

满足条件时CanExecute()不启用按钮

319

满足2个条件时的启用按钮

07
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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