【发布时间】:2015-01-22 15:26:12
【问题描述】:
我想在打开意图之前检查互联网连接。我怎样才能做到这一点?我是这个领域的初学者。任何帮助将不胜感激。
【问题讨论】:
标签: android
我想在打开意图之前检查互联网连接。我怎样才能做到这一点?我是这个领域的初学者。任何帮助将不胜感激。
【问题讨论】:
标签: android
此方法检查手机是否已连接到互联网,如果已连接则返回 true,并且您需要更新清单文件
private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo == null) {
// There are no active networks.
return false;
} else
return true;
}
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
【讨论】:
试试下面的代码
public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
return netInfo != null && netInfo.isConnectedOrConnecting();
}
在清单中添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
【讨论】:
在开始新 Intent 之前使用ConnectivityManager,如果isConnectedOrConnecting() 返回true,您可以继续使用Intent.startActivity()
不要忘记清单中的android.permission.ACCESS_NETWORK_STATE
查看重复的here 以获得更深入的解释
【讨论】:
非常简单地将这个函数复制到你想要 Intent 的 Activity。
public boolean CheckInternet() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
//we are connected to a network
return true;
}
return false;
}//end of check int
现在在 Intent 之前只需在 if 条件下调用这个函数
if(CheckInternet()){
Intent intent=new Intent(this,NextActivity.class);
startActivity(intent);
}
else{
Toast.makeText(this, "No Internet.", Toast.LENGTH_SHORT).show();
}
不要忘记在 AndroidManifest.xml 中添加这些行
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
谢谢。
【讨论】: