Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 继续在Android应用程序中检查互联网连接[检查互联网可用性]_Java_Android - Fatal编程技术网

Java 继续在Android应用程序中检查互联网连接[检查互联网可用性]

Java 继续在Android应用程序中检查互联网连接[检查互联网可用性],java,android,Java,Android,在回答问题或采取任何行动之前,请仔细阅读描述,我昨天和今天日夜都在尝试这样做,但我找不到任何可接受的解决方案有些不推荐使用安卓系统,有些不工作,有些只是检查互联网是否连接正常。但这不是我想要的 在这方面,我已经应用了许多堆栈溢出答案,但没有什么是完美的。我想要的功能是, saymathavity.java和activity\u math.xml是从main activity.java单击按钮后加载的页面。单击按钮后启动MathActivity.java时,其主要功能是通过ping方法检查活动的i

在回答问题或采取任何行动之前,请仔细阅读描述,我昨天和今天日夜都在尝试这样做,但我找不到任何可接受的解决方案有些不推荐使用安卓系统,有些不工作,有些只是检查互联网是否连接正常。但这不是我想要的

在这方面,我已经应用了许多堆栈溢出答案,但没有什么是完美的。我想要的功能是, say
mathavity.java
activity\u math.xml
是从
main activity.java
单击
按钮后加载的页面。单击按钮后启动
MathActivity.java
时,其主要功能是通过ping方法检查活动的internet连接。虽然它不能正常工作

public boolean checkIntCON() {
        try {
            Process ipProcess = Runtime.getRuntime().exec("/system/bin/ping -c 1 8.8.8.8");
            return (ipProcess.waitFor() == 0);
        }
        catch (IOException e)          { e.printStackTrace(); }
        catch (InterruptedException e) { e.printStackTrace(); }
        return false;
    }
但它的检查只有一次,当我输入[我做了那项工作,但我不想那样做],说用户正在
活动中阅读pdf\u math.xml
,当用户阅读该用户关闭了互联网连接,当用户关闭连接时,我也能听到该功能,这是可以的,但如果用户再次打开互联网不可用的数据,我就听不到

我想获得最新的、最大限度的设备支持解决方案,以继续签入internet连接。假设用户正在阅读pdf,五分钟后我想检查用户是否有活动的internet连接。连接必须是可转移的internet连接。我找到了
AsyncTask
解决方案,但已弃用。主要的重点是我想在一定的时间间隔后检查用户活跃的互联网连接

这里有一张图片可以解释更多,


有什么解决办法吗?如果有请尝试给我详细的代码,我只是想复制和粘贴在项目中。我再次访问了我提到的所有堆栈内溢出。

传递上下文并调用函数,我认为这就是您要寻找的

 public static boolean isConnected(Context context) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
            Log.d("VIP", "isConnected: " + capabilities.getTransportInfo() + " down stream " + capabilities.getLinkDownstreamBandwidthKbps() +
                    " up stream " + capabilities.getLinkUpstreamBandwidthKbps() + " Cellular " + capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
                    + " WiFi " + capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) + " Ethernet " + capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET));
            return capabilities != null && capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET);
        } else {
            NetworkInfo networkInfo = Objects.requireNonNull(connectivityManager).getActiveNetworkInfo();
            boolean b = networkInfo != null && networkInfo.isConnected() && networkInfo.getDetailedState() != NetworkInfo.DetailedState.VERIFYING_POOR_LINK;
            Log.d("VIP", "isConnected: else is connected " + b);
            return b;
        }
    }

传递上下文并调用函数,我认为这就是您要寻找的

 public static boolean isConnected(Context context) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
            Log.d("VIP", "isConnected: " + capabilities.getTransportInfo() + " down stream " + capabilities.getLinkDownstreamBandwidthKbps() +
                    " up stream " + capabilities.getLinkUpstreamBandwidthKbps() + " Cellular " + capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
                    + " WiFi " + capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) + " Ethernet " + capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET));
            return capabilities != null && capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET);
        } else {
            NetworkInfo networkInfo = Objects.requireNonNull(connectivityManager).getActiveNetworkInfo();
            boolean b = networkInfo != null && networkInfo.isConnected() && networkInfo.getDetailedState() != NetworkInfo.DetailedState.VERIFYING_POOR_LINK;
            Log.d("VIP", "isConnected: else is connected " + b);
            return b;
        }
    }


这叫什么?这是停止活动,不工作,我已经通过它传递了上下文。此上下文来自上下文上下文。将这些添加到您的清单中也添加了,但仍将继续停止app@MoniruzzamanMonir:如果您说“停止应用程序”,请查看logcat输出以了解其崩溃的原因。Android应用程序通常不会“悄悄地消失”。尝试调用虚拟方法“java.lang.Object”这是logcat错误你怎么称呼它?这是停止活动,不工作,我已经通过它传递了上下文。此上下文来自上下文上下文。将这些添加到您的清单中也添加了,但仍将继续停止app@MoniruzzamanMonir:如果您说“停止应用程序”,请查看logcat输出以了解其崩溃的原因。Android应用程序通常不会“悄悄地消失”。尝试调用虚拟方法“java.lang.Object”这是logcat错误这是否回答了您的问题?这只是显示状态,我的意思是互联网是否连接。如果你想知道你是否能成功地执行一个给定的web请求,那么唯一100%可靠的方法就是尝试执行这个web请求。很有可能所有东西都被“检测为已连接”,互联网的某些子集仍被阻止(例如被工作/学校防火墙)。没有一种通用的“设备已连接”状态能够精确地告诉您哪些设备可以工作,哪些设备不能工作。互联网“已连接”与“可用”之间有什么区别?你给出的解决方案是“工作不正常”吗?假设你没有数据余额,或者你的sim卡没有余额。或者有时你连接到一个WIFI,但没有互联网,那么这一切逻辑都显示为真,但我需要执行false当它连接,但没有可转移的互联网可用,看看这张照片。蜂窝数据已连接,但存在一个?在左上角登录表示没有可用的internet@Ryan M这能回答你的问题吗?这只是显示状态,我的意思是互联网是否连接。如果你想知道你是否能成功地执行一个给定的web请求,那么唯一100%可靠的方法就是尝试执行这个web请求。很有可能所有东西都被“检测为已连接”,互联网的某些子集仍被阻止(例如被工作/学校防火墙)。没有一种通用的“设备已连接”状态能够精确地告诉您哪些设备可以工作,哪些设备不能工作。互联网“已连接”与“可用”之间有什么区别?你给出的解决方案是“工作不正常”吗?假设你没有数据余额,或者你的sim卡没有余额。或者有时你连接到一个WIFI,但没有互联网,那么这一切逻辑都显示为真,但我需要执行false当它连接,但没有可转移的互联网可用,看看这张照片。蜂窝数据已连接,但存在一个?在左上角登录表示没有可用的internet@瑞安M