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