如何在应用程序启动之前和运行时检查互联网连接?

2024-02-07

我找到了很多关于这个问题的答案,但也无法实现这些答案。 我想在这里实现这段代码,但无法做到。

这段代码是我在谷歌文档中找到的。

ConnectivityManager cm =
           (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

  NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
  boolean isConnected = activeNetwork != null &&
                  activeNetwork.isConnectedOrConnecting();   

https://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html#DetermineConnection https://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html#DetermineConnection

public class JSONfunctions {

public static JSONObject getJSONfromURL(String url) {
    InputStream is = null;
    String result = "";
    JSONObject jArray = null;

    // Download JSON data from URL
    try {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();

    } catch (Exception e) {
        Log.e("log_tag", "Error in http connection " + e.toString());
    }

    // Convert response to string
    try {
        BufferedReader reader = null;
        if (is != null) {
            reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
        }
        StringBuilder sb = new StringBuilder();
        String line;
        if (reader != null) {
            while ((line = reader.readLine()) != null) {
                sb.append(line).append("\n");
            }
        }
        if (is != null) {
            is.close();
        }
        result = sb.toString();
    } catch (Exception e) {
        Log.e("log_tag", "Error converting result " + e.toString());
    }

    try {

        jArray = new JSONObject(result);
    } catch (JSONException e) {
        Log.e("log_tag", "Error parsing data " + e.toString());
    }

    return jArray;
}

}


UPDATE:

更新互联网检查的解决方案。现在对我有用的是这个

fun isNetworkAvailable(context: Context?): Boolean {
    if (context == null) return false

    val connectivityManager =
        context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        val capabilities =
            connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)
        return capabilities != null &&
                (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) ||
                        capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
                        capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET))
    } else {
        try {
            val activeNetworkInfo = connectivityManager.activeNetworkInfo
            return activeNetworkInfo != null && activeNetworkInfo.isConnected
        } catch (ignored: Exception) {
        }
    }

    return false
}

OLD:

检查互联网连接的简单功能

protected boolean isOnline() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnected()) {
        return true;
    } else {
        return false;
    }
}

并且在您的 AndroidManifest.xml 中您应该添加权限

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

如何在应用程序启动之前和运行时检查互联网连接? 的相关文章

  • 在 Android 中使用 awt

    我有一个绘制图表的 Java Swing 应用程序 它使用 Graphics2D 调用和 awt 对象 例如 Rectangle 等 在某些时候我可能想将其移植到 Android 上 我知道我无法在 Android 上使用 Graphics
  • 如何使用具有三种布局的视图翻转器?

    我目前正在使用ViewFlipper我的主要活动有两种不同的布局 我想使用第三种布局 但我只能找到showNext and showPrevious 命令 有人可以告诉我如何使用来实现第三种布局吗ViewFlipper 为您制作了一个示例
  • 清晰的图标 清晰的 Android 应用程序

    你好 下午好 关于如何提高图标的 png 质量 有什么想法吗 我使用了 Android 开发者页面上的套件 但我无法获得清晰的图像 我的意思是非常清晰 我是否需要以不同的方式加载此图标 而不仅仅是拖入我的布局 谢谢 我使用这个布局
  • 与通用地图相比,MapView 的分辨率较差

    我刚刚收到 HTC Desire 进行测试 我注意到 残留在小于整个屏幕的框架中的地图视图不如通用地图应用程序那么清晰 有什么办法解决这个问题吗 您应该使用 API 级别 4 或更高级别编译应用程序 然后在 AndroidManifest
  • 将项目添加到 android 框架的设置中

    我正在 android 框架中工作 我想向 android 操作系统中的现有设置添加一个项目 您能告诉我如何执行此操作吗 首先阅读有关偏好活动 http developer android com reference android pre
  • 新安装的Eclipse和Android SDK。无法让模拟器工作。挂在时钟屏幕上

    我对开发是全新的 我已经安装了 Eclipse 和 Andoid SDK 但是 我无法让模拟器工作 我已经尝试过示例记事本代码和 Hello Android 教程代码 每次我尝试运行任一应用程序时 它都会挂在时钟屏幕上 屏幕上还显示正在充电
  • 在活动启动期间优雅地处理屏幕方向变化

    我正在尝试找到一种方法来正确处理设置活动 其中活动的方向是根据启动它的意图中的数据确定的 这是一款用户可以选择关卡的游戏 其中一些是纵向的 一些是横向的 我面临的问题是setRequestedOrientation ActivityInfo
  • Android - 使用 SAX 解析器解析大文件

    我正在尝试使用 SAX 解析器解析来自 webservice 的 xml 数据 当我尝试使用 URL 解析数据 大小 7 4MB 时 它工作正常 但是当我从 URL 复制 xml 数据并放置 xml 文件时 size 7 4MB 在raw文
  • 旋转 Google 地图中的两层标记图标

    在我的应用程序中 我向地图添加了一定数量的标记 如下所示 private fun addMarker googleMap GoogleMap location Location val options MarkerOptions optio
  • 如何防止应用程序被盗(针对Android应用程序)?

    我想知道防止人们窃取我的应用程序的最有效方法是什么 在线下载 apk 的副本而不是购买它 我已经花了一个lot特别是 Droidbox 上的时间 并且不会发布 Sync 直到我可以保证提供专业版本的非法副本的人无法发布 有人实施过这个吗 我
  • 本地管理的广播接收器泄漏?

    当应用程序被系统杀死时 本地 即使用 LocalBroadcastManager 管理 BroadcastReceiver 是否有可能泄漏 我需要它的具体用例是我想在活动的 onCreate onDestroy 中注册 注销 Broadca
  • foo.setVisibility(View.GONE) 和parent.removeView(foo) 之间的区别

    如果 foo 是一个视图 那么有什么区别foo setVisibility View GONE and fooParent removeView foo 我对两个语句之前和之后视图的内存消耗特别感兴趣 可见性设置为 GONE 的视图是否会消
  • 使用 Box2d(适用于 Android)进行碰撞检测?

    有人可以解释一下使用 box2d for android 进行碰撞检测的工作原理吗 我无法理解 BBContactListener 以什么方式工作 BBContactListener listener new BBContactListen
  • 使用 twitter API 1.1 在 Android 应用程序中显示 twitter feed

    基本上我想展示这个提要 https en twitter com epl live https en twitter com epl live在我的应用程序中 由于 twitter 更改了其 api 1 1 每个调用都必须经过授权 我发现的
  • DialogFragment 关闭事件

    我需要处理 DialogFragment 的结尾 在调用 dismiss 之后 例如 我会在关闭后 包含 片段的活动内显示一个 toast 我该如何处理该事件 覆盖onDismiss 在你的DialogFragment中 或者使用setOn
  • Android:从 PhoneGap 应用打开 Play 商店链接

    我想从我的phonegap 3 4 应用程序打开一个指向Google Play 商店的链接 呼唤market details id com google android apps maps导致 ActivityNotFoundExcepti
  • 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才显示 并且我有一个黑屏 这可能需要很长一段时间
  • 在两个片段之间拖放视图

    我目前正在尝试在两个片段之间实现拖放 我已经将它们添加到我的活动中 如下所示 FragmentManager fm getFragmentManager FragmentTransaction ft fm beginTransaction
  • FCM(Firebase Cloud Messaging)如何发送到所有手机?

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

随机推荐

  • IAP 实际验证收据 (Swift)

    我一直在尝试在我的 spritekit 游戏中实现收据验证 我一直在关注各种教程 基本上最终得到了这段代码 enum RequestURL String case production https buy itunes apple com
  • 尝试让phonegap的Android LocalNotification插件在cordova-1.6.0中工作

    我正在尝试将使用适用于 Android 的 LocalNotification 插件的 Phonegap 1 4 1 项目升级到 cordova 1 6 0 我在这里找到了这个链接 https github com davejohnson
  • VisibleDeprecationWarning - 这是从哪里来的?

    我正在编写一些代码来用 python 模拟量子计算机 我刚刚添加了一个开始集成大于一个量子位功能的部分 然后出现了这个奇怪的错误 它没有说明是哪一行引起的 所以我什至不知道从哪里开始修复它 而且我以前从未见过它 此外 即使出现此错误 该程序
  • 无法通过 AWS EC2 实例上的 Gunicorn 访问 Django 默认应用程序

    我已经为这个问题苦苦挣扎了两天 但没有成功 我创建了一个名为 testdj 的默认 Django 1 6 1 应用程序实例 将其安装在运行 Ubuntu Server 13 10 的 Amazon AWS EC2 t1 micro 实例上
  • 如何在 IntelliJ IDEA 中使用 Lombok 生成的 setter 方法中设置断点?

    有办法进去吗智能IDEA设置一个断点在由以下方法生成的 setter 方法中Lombok 这在某些调试场景中非常有用 例如查看何时从 Hibernate 等框架调用 setter 事实上 生成的setter方法显示在IntelliJ IDE
  • 尽管有主键,MagicalRecord 关系映射仍会重复对象

    我需要一些帮助来解决我在 MagicalRecord 数据导入方面遇到的问题 我的印象是 MagicalRecord 能够通过查看主键来处理关系映射 而无需复制对象 relatedByAttribute 这是一个简单的 JSON paren
  • 哪个线程处理该信号?

    我有 2 个线程 线程 1 和线程 2 我有信号配置SIGINT 每当SIGINT发生线程2应该处理该信号 为此我写了下面的程序 include
  • 承诺的不可变性及其保证价值意味着什么?

    我试图理解es6 Promise 和常规回调之间的区别 http www datchley name es6 promises 但不要得到下面的例子 有人可以展示使用回调执行以下操作会是什么样子吗 an immediately resolv
  • 如何正确使用va_list,add,start,end?

    我正在努力创建自己的 printf 函数 我从完成主项目所需的较小功能开始 如果 i 0 我的函数应该返回参数的总和 或者如果 i 1 它应该返回作为参数传递的最后 nb 个字符串的大小总和 因此 如果我有 a out 0 2 3 3 它应
  • 使用快速步进器乘以我的原始数字而不是以前的数字

    这是我的代码 我的需要是价格标签上是否有编号 当按步进器添加时 我需要步进值来乘以我的价格数字 但我遇到这种情况 价格标签不会乘以我原来的数字 就像价格原本是 50 一样 我想显示 50 100 150 200 250 不是这样的 50 1
  • 在 Windows 中使用 SHARE 属性对文件进行内存映射(因此文件不会被锁定以防止删除)

    有没有什么方法可以将文件的内容映射到 Windows 中的内存中 而不会锁定文件 特别是 这样可以在仍进行 mmap 时删除文件 Java NIO 库在 Windows 中映射文件 这样当堆中留有任何非垃圾收集的 MappedByteBuf
  • 这是实体关系图还是类图

    嘿 基本上我对类图和 ERD 的区别感到困惑 我创建了一个我认为是 ERD 的东西 但我的室友似乎认为它是一个类图 它是什么 与已接受的答案相反 xmojmr 也注意到这是NOTUML 图 而是实体关系图 ERD 最明显的区别是连接器末端的
  • 基于参数化fixture的Pytest参数化

    我有一个类范围的参数化装置 它获取 3 个数据库的参数并返回每个数据库的连接 类中的测试使用此装置来测试每个数据库连接属性 现在我有一个带有数据库表测试的新类 我想使用上面的固定装置 但要在每个连接表上进行参数化 关于 pytest 实现这
  • 为什么 resize 是这样实现的?

    我有几个关于重建的问题HashMaps添加新的键值对时 我将根据这些事实提出问题 它们对于 Oracle JVM 来说是正确的 不确定它们对于其他 JVM 是否正确 调整重建大小HashMap每次当您将 HashMap 增长到大于阈值 阈值
  • ActiveRecord .... activerecord-mysql-适配器

    这让我发疯 我正在尝试使用 ActiveRecord 创建一个简单的初学者应用程序来执行简单的数据库任务 我没有使用导轨 我不断收到错误 RuntimeError Please install the mysql adapter gem i
  • 如何更改actionBar图标大小?

    The actionBar icon should like image https dl dropboxusercontent com u 16455237 ab1 png When the device resolution is 19
  • 在qt4中单击按钮时从另一个窗口生成一个窗口

    我使用 qt4 设计器创建了两个窗口 并希望将它们链接在一起 我将它们都放在一个文件夹中 并在目录外创建了一个文件 我将使用该文件导入它们 我可以同时打开两个窗口 但这不是我想要做的 我想这样做 当在一个窗口上按下按钮时 它会打开另一个窗口
  • 在 Java 中单击按钮时更改 jframe 上的图像

    我一直试图弄清楚为什么单击按钮后不在同一面板上显示下一张图片 我想将这些类分开而不是一个类 并使用 repaint 使用新图片重新调用 PaintComponent 请帮我 我快要死了 当我运行这个时 第一张图片显示得很好 当单击按钮将第一
  • pandas 滚动窗口意味着未来

    我想使用pandas DataFrame rolling https pandas pydata org pandas docs version 0 22 generated pandas DataFrame rolling html具有日
  • 如何在应用程序启动之前和运行时检查互联网连接?

    我找到了很多关于这个问题的答案 但也无法实现这些答案 我想在这里实现这段代码 但无法做到 这段代码是我在谷歌文档中找到的 ConnectivityManager cm ConnectivityManager context getSyste