我真正想要的是,当用户没有连接时,我想显示一些他或她没有连接的对话框。
我试图把它放在我的MainActivity上,但仍然没有用。
public boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo().isConnectedOrConnecting();
}
我也使用了这个,但它也不起作用:
public class ConnectionChangeReceiver extends BroadcastReceiver
{
@Override
public void onReceive( Context context, Intent intent )
{
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService( Context.CONNECTIVITY_SERVICE );
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo( ConnectivityManager.TYPE_MOBILE );
if ( activeNetInfo != null )
{
Toast.makeText( context, "Active Network Type : " + activeNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();
}
if( mobNetInfo != null )
{
Toast.makeText( context, "Mobile Network Type : " + mobNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();
}
}
}
我在清单上添加了这个:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
有人能告诉我我做错了什么,我会非常感激。提前谢谢!
答案 0 :(得分:2)
public static boolean haveInternet(Context ctx) {
NetworkInfo info = (NetworkInfo) ((ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info == null || !info.isConnected()) {
return false;
}
return true;
}
如果布尔方法返回true,那么如果为false No Connection则存在Internet连接..
if(haveInternet(ActivityName.this)==true){
//Some code
}else{
Toast.makeText(ActivityName.this,"No Internet Connection", Toast.LENGTH_SHORT).show();
}
另请参阅此内容以获取进一步的帮助.. Internet Connection ...
答案 1 :(得分:2)
也许此链接可以为您提供更多帮助:Broadcastreceiver to obtain ServiceState information
您可以通过活动中的精简CommunicationManager代码,或者更好,如果您需要从更多活动访问,您还可以在Application Singletin实例中将该类声明为静态,并按照here所述从那里调用它
您还需要在应用程序清单中注册BroadcastReceiver:
<receiver android:enabled="true" android:name="com.project.mobile.controller.comm.ConnectivityReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
享受
答案 2 :(得分:1)
只需使用此方法
private boolean isNetworkConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo network = cm.getActiveNetworkInfo();
if (network != null) {
return network.isAvailable();
}
return false;
}
答案 3 :(得分:0)
您可以在ConnectivityManager类的帮助下检查您的内部连接。 我给了一个你可以在代码中使用的函数。
public static boolean
CheckInternet(Context context) {
ConnectivityManager connec =(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
android.net.NetworkInfo wifi = > connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
android.net.NetworkInfo mobile =connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
此处如果可以获得wifi和移动网络的状态检查 或不。如果其中任何一个可用或连接,那么它将 返回true,否则为false;
if (wifi.isConnected()) {
return true;
} else if
(!mobile.isConnected())
{
return false;
} else if
(mobile.isConnected())
{
return true;
} return false;
}
使用此功能后你需要2只检查条件
if (CheckInternet(getBaseContext()))
{
//connection successfull
} else
{ Toast.makeText(getBaseContext(),"Please Check InternetConnectionToast.LENGTH_LONG).show();
}
享受
答案 4 :(得分:0)
当您连接到Wi-Fi源或通过手机数据包时,上述方法可以正常工作。但是在Wi-Fi连接的情况下,有些情况下您会被要求在Cafe中登录。因此,在这种情况下,当您连接到Wi-Fi源而不是Internet时,您的应用程序将会失败。
此方法正常。
public static boolean isConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager)context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnected()) {
try {
URL url = new URL("http://www.google.com/");
HttpURLConnection urlc = (HttpURLConnection)url.openConnection();
urlc.setRequestProperty("User-Agent", "test");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1000); // mTimeout is in seconds
urlc.connect();
if (urlc.getResponseCode() == 200) {
return true;
} else {
return false;
}
} catch (IOException e) {
Log.i("warning", "Error checking internet connection", e);
return false;
}
}
return false;
}
请在主线程的单独线程中使用它,因为它进行网络调用,如果不跟随,将抛出NetwrokOnMainThreadException。