2012-05-22 129 views
0

可能重复:
Android detect if device has internet connection如何检测Internet连接

我还没有一个程序,我只允许具有连接可以访问互联网的Android用户,其他用户互联网连接提醒他们连接到互联网,如果没有连接问题将退出。

我的主要活动代码是波纹管。我想如果移动用户已连接互联网将显示主布局,但如果没有连接提醒用户先连接互联网。

我该怎么办?请帮帮我。

我的主要活动:

public class MainSong extends Activity { 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    //My Profile 
    Button myProfile = (Button) findViewById(R.id.myprofile); 


    myProfile.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      Intent i = new Intent(); 
      i.setClassName("aaa.bbb.ccc", "aaa.bbb.ccc.myprofile"); 
      startActivity(i); } 
    }); 

    //My Songs 
    Button mySong = (Button) findViewById(R.id.mysongs); 
    mySong.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      Intent i = new Intent(); 
      i.setClassName("aaa.bbb.ccc", "aaa.bbb.ccc.mysong"); 
      startActivity(i); } 
    }); 

    //bar album 
    Button album = (Button) findViewById(R.id.myalbum); 
    album.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      Intent i = new Intent(); 
      i.setClassName("aaa.bbb.ccc", "aaa.bbb.ccc.myalbum"); 
      startActivity(i); } 
    }); 

    //bar video 
    Button video = (Button) findViewById(R.id.myvideo); 
    video.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      Intent i = new Intent(); 
      i.setClassName("aaa.bbb.ccc", "aaa.bbb.ccc.myvideo"); 
      startActivity(i); } 
    }); 
} 
} 

我很欣赏你的帮助。

回答

1

这是我在我的Android应用程序使用的代码:

  CharSequence network_fail = "This application requires that you are connected to the Internet."; 
      int duration = Toast.LENGTH_SHORT; 
      boolean isAvailable = false; 

      // Check availability of network connection 
      try 
      { 
       ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
       if(cm == null) 
        isAvailable = false; 
       else 
        isAvailable = cm.getActiveNetworkInfo().isAvailable(); 
      } 
      catch(Exception e){} 

把你的互联网依赖代码这里面,如果:

  // Check if user is connected to the Internet, and show an error if they are not. 
      if(isAvailable && (isAirplaneModeOn(context) == false)) 
      { 
       // Internet-reliant code 
      } 
      else 
      { 
       Toast fail = Toast.makeText(context, network_fail, duration); 
       fail.show(); 
      } 

您还需要强制性<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />在AndroidManifest.xml档案与我的代码一样。

+0

亲爱的Alex W,你能解释清楚吗?因为我不知道如何在我的主要活动中添加代码? – SopheakVirak

+0

在我的应用程序中,我在按钮的onClickListener中以上述代码的顺序显示了所有上述代码。例子:Button imgButton =(Button)findViewById(R.id.buttonImg); imgButton.setOnClickListener(new OnClickListener(){public void onClick(View arg0){// PUT CODE HERE}}); ...将它放在主要活动中,并将其更改为与布局中的按钮相关 –

1

您可以检查用户是否通过使用ConnectivityManager为连接到互联网或不:

public boolean checkNetworkStatus() { 

    final ConnectivityManager connMgr = (ConnectivityManager) this 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 

    final android.net.NetworkInfo wifi = connMgr 
      .getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

    final android.net.NetworkInfo mobile = connMgr 
      .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

    if (wifi.isAvailable()) { 
    if (wifiInfo.getState() == NetworkInfo.State.CONNECTED) 
     { 
     Toast.makeText(this, "Wifi connection.", Toast.LENGTH_LONG).show(); 
     return true; 
     } 
     else 
     { 
     Toast.makeText(this, "No Connect using wifi connection.", Toast.LENGTH_LONG).show(); 
     return false; 
     } 
    } else if (mobile.isAvailable()) { 
     if (mobile.getState() == NetworkInfo.State.CONNECTED) 
     { 
     Toast.makeText(this, "Connected using GPRS connection.", Toast.LENGTH_LONG).show(); 
     return true; 
     } 
     else 
     { 
     Toast.makeText(this, "No Connect using GPRS connection.", Toast.LENGTH_LONG).show(); 
     return false; 
     } 

    } else { 
     Toast.makeText(this, "No network connection.", Toast.LENGTH_LONG).show(); 
     return false; 
    }  

} 

的AndroidManifest.xml:

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

亲爱的伊姆兰汗,你的代码deosn't工作。 – SopheakVirak

1
//To check whether network connection is available on device or not 
public static boolean checkInternetConnection(Context _activity) { 
     ConnectivityManager conMgr = (ConnectivityManager) _activity.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (conMgr.getActiveNetworkInfo() != null 
       && conMgr.getActiveNetworkInfo().isAvailable() 
       && conMgr.getActiveNetworkInfo().isConnected()) 
      return true; 
     else 
      return false; 
    }//checkInternetConnection() 

的AndroidManifest.xml:

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

Agarwal,我添加了你的代码,它没有出现任何错误,但编译后没有互联网连接,我仍然可以像往常一样去我的应用程序。 – SopheakVirak

+0

每次需要网络连接时,都必须调用此函数,并检查它是否返回true。如果它返回true,那么net连接可用,如果它返回false,则可以继续其他操作,那么您必须显示一条警告对话框,并将消息发送给用户。 –

0

您应该作出BroadcastReceiver当连接状态已经改变,将触发:

 public class BroadCastSampleActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     this.registerReceiver(this.mConnReceiver, 
       new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 
    } 
    private BroadcastReceiver mConnReceiver = new BroadcastReceiver() { 
     public void onReceive(Context context, Intent intent) { 
      boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); 
      String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON); 
      boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false); 

      NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); 
      NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO); 

      if(currentNetworkInfo.isConnected()){ 
       Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show(); 
      }else{ 
       Toast.makeText(getApplicationContext(), "Not Connected", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }; 
} 

,然后在AndroidManifest您可以检查您是否已经连接:

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

以供参考here source