Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.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 从主活动中检查internet状态_Java_Android_Connectivity - Fatal编程技术网

Java 从主活动中检查internet状态

Java 从主活动中检查internet状态,java,android,connectivity,Java,Android,Connectivity,我是android开发的新手,所以我没有足够的编码经验,所以我需要你的帮助。。。 我在android studio上创建了一个java类来检查是否存在互联网连接: import android.app.Activity; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.util.Log; import jav

我是android开发的新手,所以我没有足够的编码经验,所以我需要你的帮助。。。 我在android studio上创建了一个java类来检查是否存在互联网连接:

import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;


public class InternetStatus {
private static final String LOG_TAG ="InternetStatus";
public static boolean hasActiveInternetConnection(Context context) {
    if (isNetworkAvailable((Activity) context)) {
        try {
            HttpURLConnection urlc = (HttpURLConnection) (new     URL("http://www.google.com").openConnection());
            urlc.setRequestProperty("User-Agent", "Test");
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(1500);
            urlc.connect();
            return (urlc.getResponseCode() == 200);
        } catch (IOException e) {
            Log.e(LOG_TAG, "Error checking internet connection", e);
        }
    } else {
        Log.d(LOG_TAG, "No network available!");
    }
    return false;
}
public static boolean isNetworkAvailable(Activity mActivity) {
    Context context = mActivity.getApplicationContext();
    ConnectivityManager connectivity = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity == null) {
        return false;
    } else {
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
        if (info != null) {
            for (int i = 0; i < info.length; i++) {
                if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }
            }
        }
    }
    return false;
}


}
导入android.app.Activity;
导入android.content.Context;
导入android.net.ConnectivityManager;
导入android.net.NetworkInfo;
导入android.util.Log;
导入java.io.IOException;
导入java.net.HttpURLConnection;
导入java.net.URL;
公营互联网地位{
私有静态最终字符串日志\u TAG=“InternetStatus”;
公共静态布尔hasActiveInternetConnection(上下文){
if(isNetworkAvailable((活动)上下文)){
试一试{
HttpURLConnection urlc=(HttpURLConnection)(新URL(“http://www.google.com);
setRequestProperty(“用户代理”、“测试”);
setRequestProperty(“连接”、“关闭”);
设置连接超时(1500);
connect();
返回(urlc.getResponseCode()==200);
}捕获(IOE异常){
Log.e(Log_标签,“错误检查互联网连接”,e);
}
}否则{
Log.d(Log_标签,“无可用网络!”);
}
返回false;
}
公共静态布尔值isNetworkAvailable(活动权限){
Context=mActivity.getApplicationContext();
ConnectionManager连接=(ConnectionManager)上下文
.getSystemService(Context.CONNECTIVITY\u服务);
if(连接性==null){
返回false;
}否则{
NetworkInfo[]info=connectivity.getAllNetworkInfo();
如果(信息!=null){
对于(int i=0;i

因此,我有两个问题:

1-这是正确的代码还是我遗漏了什么


2-正如您所看到的,这是一个java类,如果我在我的主要活动上创建一个按钮来检查是否有internet连接!!我怎么能通过导入这个类或类似的东西来做到这一点

在您的
main活动中

@Override
protected void onCreate (Bundle savedInstanceState) {

super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_camera);
     boolean isavailable = InternetStatus.hasActiveInternetConnection(getApplicationContext);
    }
}
如果你有按钮

boolean isavailable ;
@Override
protected void onCreate (Bundle savedInstanceState) {

super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_camera);
     Button someButton = (Button) findViewById(R.id.yourButton);
     someButton.setOnClickListener(new onClickLIstener(){
               isavailable = InternetStatus.hasActiveInternetConnection(getApplicationContext);
     });
    }
}

要检查连接状态,无需连接到internet并获取状态代码。使用下面的代码

public boolean isConnected() {
    ConnectivityManager manager = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
    NetworkInfo info = manager.getActiveNetworkInfo();
    if (info != null && info.isConnected()) {
        return true;
    } else {
        return false;

    }
}
它将根据活动网络状态返回true或false

在您的按钮上单击并调用此函数,如果返回true,则存在连接。如果返回false,则表示没有活动的internet连接。

只需将info.isConnected()放在isNetworkAvailable函数中:

  public static boolean isNetworkAvailable(Activity mActivity) {
            ...
        if (connectivity == null) {
            return false;
        } else {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
                if (info != null && info.isConnected()) {
                    ...
                    }
                }
            }
            return false;
        }
如何使用?

例如,我们需要检查连接是否可用:

if(isNetworkAvailable()){
    // do your thing here.
}
当网络可用时,我们需要检查是WiFi还是移动网络:

if(isConnectedWifi()){
    // do your thing here with WiFi Network.
}

if(isConnectedMobile()){
    // do your thing here with Mobile Network.
}

首先,您必须在AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

大多数答案都过时了

    fun isNetworkAvailable(context : Context): Boolean {
        val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        if (isAndroidVersionAboveLollipop()) {
            val activeNetwork = connectivityManager.activeNetwork ?: return false
            val networkCapabilities = connectivityManager.getNetworkCapabilities(activeNetwork) ?: return false
            networkCapabilities.let {
                return it.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) && it.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
            }
        } else {
              return connectivityManager.activeNetworkInfo?.isConnectedOrConnecting ?: false
         }
    }

    fun isAndroidVersionAboveLollipop() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M

谢谢兄弟:)这是最好的答案(Y),它100%有效,但这里缺少的是“连通性”类,你必须构建它,我用谷歌搜索它,并在这里查看类:()我想投票支持你的答案,但我没有足够的声誉:(感谢您提供有关丢失的信息。从我这里获取+1。我没有权限请求。谢谢!
public static boolean isInternetConnected(Context context) {
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();

    return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
}
    fun isNetworkAvailable(context : Context): Boolean {
        val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        if (isAndroidVersionAboveLollipop()) {
            val activeNetwork = connectivityManager.activeNetwork ?: return false
            val networkCapabilities = connectivityManager.getNetworkCapabilities(activeNetwork) ?: return false
            networkCapabilities.let {
                return it.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) && it.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
            }
        } else {
              return connectivityManager.activeNetworkInfo?.isConnectedOrConnecting ?: false
         }
    }

    fun isAndroidVersionAboveLollipop() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M