dan*_*dan 667 android internet-connection android-internet
我需要检测Android设备是否已连接到Internet.
本NetworkInfo类提供了一个非静态方法isAvailable()听起来很完美.
问题是:
NetworkInfo ni = new NetworkInfo();
if (!ni.isAvailable()) {
    // do something
}
抛出此错误:
The constructor NetworkInfo is not visible.
安全的赌注是有另一个类返回一个NetworkInfo对象.但我不知道哪个.
Ale*_*min 1383
返回表示它可以找到的第一个连接的网络接口的实例的getActiveNetworkInfo()方法,或者没有连接任何接口的方法.检查此方法是否返回应足以判断是否有可用的Internet连接.ConnectivityManagerNetworkInfonullnull
private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
您还需要:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
在你的Android清单中.
编辑:
请注意,拥有活动网络接口并不能保证特定网络服务可用.网络问题,服务器停机时间,低信号,强制网络门户,内容过滤器等都可能阻止您的应用访问服务器.例如,在收到Twitter服务的有效回复之前,您无法确定您的应用是否可以访问Twitter.
Squ*_*onk 241
我检查Wi-Fi和移动互联网如下......
private boolean haveNetworkConnection() {
    boolean haveConnectedWifi = false;
    boolean haveConnectedMobile = false;
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo[] netInfo = cm.getAllNetworkInfo();
    for (NetworkInfo ni : netInfo) {
        if (ni.getTypeName().equalsIgnoreCase("WIFI"))
            if (ni.isConnected())
                haveConnectedWifi = true;
        if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
            if (ni.isConnected())
                haveConnectedMobile = true;
    }
    return haveConnectedWifi || haveConnectedMobile;
}
显然,它可以很容易地修改,以检查各个特定的连接类型,例如,如果您的应用程序需要更高的Wi-Fi速度才能正常工作等.
Viv*_*har 73
第1步:在项目中创建一个AppStatus类(您也可以给出任何其他名称).然后,请将以下给定的行粘贴到您的代码中:
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
public class AppStatus {
    private static AppStatus instance = new AppStatus();
    static Context context;
    ConnectivityManager connectivityManager;
    NetworkInfo wifiInfo, mobileInfo;
    boolean connected = false;
    public static AppStatus getInstance(Context ctx) {
        context = ctx.getApplicationContext();
        return instance;
    }
    public boolean isOnline() {
        try {
            connectivityManager = (ConnectivityManager) context
                        .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
        connected = networkInfo != null && networkInfo.isAvailable() &&
                networkInfo.isConnected();
        return connected;
        } catch (Exception e) {
            System.out.println("CheckConnectivity Exception: " + e.getMessage());
            Log.v("connectivity", e.toString());
        }
        return connected;
    }
}
第2步:现在检查您的设备是否具有网络连接,然后只需将此代码段添加到您要检查的位置...
if (AppStatus.getInstance(this).isOnline()) {
    Toast.makeText(this,"You are online!!!!",8000).show();
} else {
    Toast.makeText(this,"You are not online!!!!",8000).show();
    Log.v("Home", "############################You are not online!!!!");    
}
Oct*_*ean 14
另一个重要的说明.您必须android.permission.ACCESS_NETWORK_STATE在AndroidManifest.xml中设置才能使用此功能.
_我怎么能找到自己在在线文档中需要的信息?
您只需要正确阅读课程文档,您就可以找到所需的所有答案.查看ConnectivityManager上的文档.说明会告诉您该怎么做.
小智 10
ConnectivityManager的getActiveNetworkInfo()方法返回一个NetworkInfo实例,表示它可以找到的第一个连接的网络接口,如果没有连接,则返回null.检查此方法是否返回null应足以判断Internet连接是否可用.
private boolean isNetworkAvailable() {
     ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
     NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
     return activeNetworkInfo != null; 
}
您还需要:
在你的Android清单中.
编辑:
请注意,拥有活动网络接口并不能保证特定网络服务可用.网络问题,服务器停机时间,低信号,强制网络门户,内容过滤器等都可能阻止您的应用访问服务器.例如,在收到Twitter服务的有效回复之前,您无法确定您的应用是否可以访问Twitter.
getActiveNetworkInfo()不应该永远不会给null.当他们提出这个问题时,我不知道他们在想什么.它应该总是给你一个对象.
可能我发现自己:
ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
return connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting();
| 归档时间: | 
 | 
| 查看次数: | 524895 次 | 
| 最近记录: |