Android正在检查互联网连接
我正在制作一个应用程序,其中启动活动获取用户的位置,当它获取位置时,它会将用户重定向到另一个活动。但是当没有可用的internet时,它不能将用户重定向到另一个活动Android正在检查互联网连接,android,Android,我正在制作一个应用程序,其中启动活动获取用户的位置,当它获取位置时,它会将用户重定向到另一个活动。但是当没有可用的internet时,它不能将用户重定向到另一个活动 private boolean isNetworkAvailable() { ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkI
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
这是我的主要活动代码的一部分:
protected void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(networkReceiver, filter); //here i have registerd the receiver
// create class object
final GPSTracker gps = new GPSTracker(WelcomeActivity.this);
// check if GPS enabled
if (gps.canGetLocation()) {
latitude = gps.getLatitude();
longitude = gps.getLongitude();
if (latitude != 0.0 && longitude != 0.0) {
if (Utils.isNetworkAvailable(WelcomeActivity.this)) {
fetchlocation.setText("Fetching your Location...");
sendGetAddressRequest(latitude, longitude);
}
else
fetchlocation.setText("No Internet Connectivity");
} else {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
latitude = gps.getLatitude();
longitude = gps.getLongitude();
if (latitude != 0.0 && longitude != 0.0) {
if (Utils.isNetworkAvailable(WelcomeActivity.this)) {
fetchlocation.setText("Fetching your Location...");
sendGetAddressRequest(latitude, longitude);
} else
fetchlocation.setText("No Internet Connectivity");
} else {
Toast.makeText(WelcomeActivity.this, "Couldn't detect location", Toast.LENGTH_LONG).show();
}
}
}, 5000);
}
} else {
// fetchlocation.setText("Enable Location First");
gps.showSettingsAlert();
}
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getExtras() != null) {
NetworkInfo ni = (NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);
if (ni != null && ni.getState() == NetworkInfo.State.CONNECTED) {
// we're connected
}
}
}
这是在onPause中:
@Override
protected void onPause() {
unregisterReceiver(networkReceiver); // here i have unregistered the receiver
super.onPause();
}
public boolean isNetworkConnected() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
这是我的网络连接代码:
protected void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(networkReceiver, filter); //here i have registerd the receiver
// create class object
final GPSTracker gps = new GPSTracker(WelcomeActivity.this);
// check if GPS enabled
if (gps.canGetLocation()) {
latitude = gps.getLatitude();
longitude = gps.getLongitude();
if (latitude != 0.0 && longitude != 0.0) {
if (Utils.isNetworkAvailable(WelcomeActivity.this)) {
fetchlocation.setText("Fetching your Location...");
sendGetAddressRequest(latitude, longitude);
}
else
fetchlocation.setText("No Internet Connectivity");
} else {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
latitude = gps.getLatitude();
longitude = gps.getLongitude();
if (latitude != 0.0 && longitude != 0.0) {
if (Utils.isNetworkAvailable(WelcomeActivity.this)) {
fetchlocation.setText("Fetching your Location...");
sendGetAddressRequest(latitude, longitude);
} else
fetchlocation.setText("No Internet Connectivity");
} else {
Toast.makeText(WelcomeActivity.this, "Couldn't detect location", Toast.LENGTH_LONG).show();
}
}
}, 5000);
}
} else {
// fetchlocation.setText("Enable Location First");
gps.showSettingsAlert();
}
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getExtras() != null) {
NetworkInfo ni = (NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);
if (ni != null && ni.getState() == NetworkInfo.State.CONNECTED) {
// we're connected
}
}
}
当没有可用的internet时,textview会将文本显示为Np internet Connectivity..当我打开internet时,它仍然显示为no internet Connectivity..我想要的是当internet来临或打开Wifi或网络数据时,textview必须将文本显示为获取您的位置,并将用户重定向到其他活动
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
如果此布尔值为真,则表示您有网络连接,然后执行如下操作:
if(isNetworkAvailable()){
// perform your operation here
}
您还需要:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
从活动中以这种方式呼叫:
getNetworkType(活动)
获取wifi或sim卡互联网:
getDataType()方法:
有关更精确的详细信息(2G、3G或4G)。
您必须检查您是否连接到internet,而不仅仅是wifi网络。你可能想试试这个:
try {
HttpURLConnection urlc = (HttpURLConnection) (new URL("http://google.com").openConnection());
urlc.setRequestProperty("User-Agent", "Test");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1500);
urlc.connect();
isConnected = true;
}catch (IOException e) {
isConnected = false;
}