我在Android中使用Parse开发应用程序,我需要检查设备上的互联网连接。所以我为登录做了这个:
connectivityManager = (ConnectivityManager)getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
networkInfo = connectivityManager.getActiveNetworkInfo();
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (networkInfo != null && networkInfo.isConnected()) {
if (validate()) {
ParseUser.logInInBackground(user, password, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException e) {
if (user != null) {
//code to send to MainActivity
} else {
//code if the values are wrong
}
}
});
}
}else {
Toast.makeText(getActivity(), "Check your network connection", Toast.LENGTH_LONG).show();
}
}
});
这是我的问题。在我的国家,我们的手机供应商免费提供whatsapp和facebook,但如果您尝试使用移动数据浏览或使用其他应用程序是不允许的。当我尝试在没有任何移动数据的情况下登录我的应用程序时,我不知道如何,应用程序检测到一些移动数据并尝试登录。我在这里阅读,这是使用网络连接的最佳方式,但我认为这些不是解决方案。如何检查设备中的兆字节或数据?或者我应该做一些不同的事情来检查连接?提前致谢
答案 0 :(得分:2)
尝试使用此解决方案可能会有所帮助。
public boolean isNetworkOnline() {
boolean status=false;
try{
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getNetworkInfo(0);
if (netInfo != null && netInfo.getState()==NetworkInfo.State.CONNECTED) {
status= true;
}else {
netInfo = cm.getNetworkInfo(1);
if(netInfo!=null && netInfo.getState()==NetworkInfo.State.CONNECTED)
status= true;
}
}catch(Exception e){
e.printStackTrace();
return false;
}
return status;
}
答案 1 :(得分:1)
http://clients3.google.com/generate_204用于检查连接。
import java.net.HttpURLConnection;
import java.net.URL;
...
private int inter = 0;
...
class checkconne extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... args) {
int kk=0;
try {
HttpURLConnection urlc = (HttpURLConnection)
(new URL("http://clients3.google.com/generate_204")
.openConnection());
urlc.setRequestProperty("User-Agent", "Android");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1500);
urlc.connect();
kk= urlc.getResponseCode();
} catch (IOException e) {
Log.e("qweqwe", "Error checking internet connection", e);
}
inter=kk;
return null;
}
@Override
protected void onPostExecute(String file_url) {
if (inter == 204){
Toast.makeText(MainActivity3.this, "is connected", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity3.this, "No connection", Toast.LENGTH_LONG).show();
}
}
}