Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.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 是否有办法测试移动数据可用性(如果启用,则不保证I';m连接到Internet)?_Java_Android_Xml_Networking - Fatal编程技术网

Java 是否有办法测试移动数据可用性(如果启用,则不保证I';m连接到Internet)?

Java 是否有办法测试移动数据可用性(如果启用,则不保证I';m连接到Internet)?,java,android,xml,networking,Java,Android,Xml,Networking,我已尝试使用以下功能来测试Internet可用性: public boolean isNetworkAvailable(){ ConnectivityManager conn=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){ Network net=

我已尝试使用以下功能来测试Internet可用性:

public boolean isNetworkAvailable(){
        ConnectivityManager conn=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
            Network net=conn.getActiveNetwork();
            NetworkCapabilities nc=conn.getNetworkCapabilities(net);
            if(net==null){
                return  false;
            }else{
                return true;
            }}
        return false;
    }
它工作得很好,但如果移动设备没有互联网,并且移动数据已启用,则应用程序将继续崩溃。因此,如果有人试图解决这个问题,请告诉我如何解决。我正在做我的第一个Android项目。我在这里测试了一些解决方案,但仍然不起作用


谢谢回复

要检查您的设备是否已连接到internet,请使用以下方法,如果您的设备已连接到internet,则返回
true

这支持WiFi和移动数据

public boolean isOnline(Context context) {

    boolean isConnected = false;
    ConnectivityManager   mConnectivityMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
        // Checking internet connectivity
        NetworkInfo activeNetwork = null;
        if (mConnectivityMgr != null) {
            activeNetwork = mConnectivityMgr.getActiveNetworkInfo(); // Deprecated in API 29
        }
        isConnected = activeNetwork != null;

    } else {
        Network[] allNetworks = mConnectivityMgr.getAllNetworks(); // added in API 21 (Lollipop)

        for (Network network : allNetworks) {
            NetworkCapabilities networkCapabilities = mConnectivityMgr.getNetworkCapabilities(network);
            if (networkCapabilities != null) {
                if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
                        || networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
                        || networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET))
                    isConnected = true;
            }
        }
    }

    return isConnected;

}
public boolean isOnline(上下文){
布尔值未连接=假;
ConnectivityManager mConnectivityMgr=(ConnectivityManager)context.getSystemService(context.CONNECTIVITY_服务);
if(Build.VERSION.SDK_INT

您还可以查看更多的internet功能

是否有一种方法可以在确定我是否连接之前“ping”到google服务器。@BOUSBAbadredd查看一下非常感谢,我在AsyncTask类中完成了这项工作,它解决了问题。