检查android设备中可用的移动网络数据

检查android设备中可用的移动网络数据,android,parse-platform,network-connection,Android,Parse Platform,Network Connection,我正在用Android开发一个带有Parse的应用程序,我需要检查设备上的互联网连接。因此,我在登录时做了以下操作: connectivityManager = (ConnectivityManager)getActivity().getSystemService(Context.CONNECTIVITY_SERVICE); networkInfo = connectivityManager.getActiveNetworkInfo(); btnLogin.setOnClickList

我正在用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,但如果您试图浏览或使用其他应用程序使用您的移动数据,则是不允许的。当我尝试在没有任何移动数据的情况下登录我的应用程序时,我不知道如何,应用程序检测到一些移动数据并尝试登录。我在这里读到的是使用网络连接的最佳方式,但我认为这些都不是解决方案。如何检查设备中的兆字节或数据?或者我应该做些不同的事情来检查连接?提前感谢

尝试此解决方案可能会有所帮助

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;

    }  
用于检查连接

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();

                        }


                    }
                }
导入java.net.HttpURLConnection;
导入java.net.URL;
...
私有int-inter=0;
...
类checkconne扩展了异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(字符串…args){
int kk=0;
试一试{
HttpURLConnection urlc=(HttpURLConnection)
(新网址http://clients3.google.com/generate_204")
.openConnection());
setRequestProperty(“用户代理”、“Android”);
setRequestProperty(“连接”、“关闭”);
设置连接超时(1500);
connect();
kk=urlc.getResponseCode();
}捕获(IOE异常){
Log.e(“qweqwe”,“错误检查互联网连接”,e);
}
inter=kk;
返回null;
}
@凌驾
受保护的void onPostExecute(字符串文件\u url){
如果(inter==204){
Toast.makeText(MainActivity3.this,“已连接”,Toast.LENGTH_LONG.show();
}否则{
Toast.makeText(MainActivity3.this,“无连接”,Toast.LENGTH_LONG.show();
}
}
}

getNetworkInfo中这些参数的含义是什么@尼加姆Patro@Coeus对于网络类型,该数字是不同的。0表示移动网络,1表示WIFI。@我们尝试一下,然后告诉我。