[英]Continues Internet Connection Checking in Android App [Checking Availability of Internet]
在回答或僅通過查看問題標題采取任何行動之前,請仔細閱讀說明,我昨天和今天一整天都在嘗試這樣做,但我找不到任何可接受的解決方案。 有些已從 android 中棄用,有些無法正常工作,有些只是檢查互聯網是否已連接。 但這不是我要的。
在這方面,我已經應用了許多 Stack Overflow 的答案,但沒有什么是完美的。 我要求的功能是,說MathActivity.java
和activity_math.xml
是單擊mainActivity.java
的button
后加載的頁面。 當MathActivity.java
在單擊按鈕后啟動時,它主要可以通過 ping 方法檢查活動的互聯網連接。 雖然它不能正常工作,
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;
}
但它只在我輸入時檢查一次[我做了那項工作,但我不想要那樣] ,說用戶正在閱讀activity_math.xml
的 pdf 並且當用戶閱讀此用戶時關閉了互聯網連接,我也能夠當用戶關閉連接時收聽該功能,這沒問題,但如果用戶再次打開互聯網不可用的數據,那么我就聽不到這個了。
我想獲得最新和最大設備支持的解決方案,以檢查繼續 Internet 連接。 說用戶正在閱讀 pdf,五分鍾后我想檢查用戶是否有活動的互聯網連接。 連接應該是必須可傳輸的互聯網連接。 我找到了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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.