java - Android App判断是否有连接

标签 java android

我想问一个对你们中的一些人来说可能非常简单的问题。

我如何知道我的应用程序是否有互联网连接?

我想连接到 MySQL 数据库,当没有互联网时,应该有一个 AlertDialog。

    new AsyncTask() {
        ProgressDialog dialog = ProgressDialog.show(AppActivity.this, "Lade", "Daten werden abgerufen...", true);
        @Override
        protected void onPostExecute(Object result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            dialog.dismiss();
            max = Name.size()-1;
            kontrolle = new boolean [max*2];

            pb.setMax(max/2);

            java.util.Arrays.fill(kontrolle, false);

            bilder();
        }

        @Override
        protected Object doInBackground(Object... arg0) 
        {
            // TODO Auto-generated method stub
               dialog.show();
               getData();
            return null;
        }
    }.execute();

 private void getData() 
{
    String result = "";
    ArrayList<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();

    try
    {
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("http://.../read.php");
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
        HttpResponse response = httpClient.execute(httpPost);
        HttpEntity entity = response.getEntity();
        is=entity.getContent();
    }
    catch(Exception e)
    {
        Log.e("log-tag","Keine Verbindung"+e.toString());
        Toast.makeText(getApplicationContext(), "Keine Verbindung!", Toast.LENGTH_SHORT).show();
    }

    try
    {

        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
        StringBuilder sb = new StringBuilder();
        String line = "";

        while((line= reader.readLine())!=null)
                {
                    sb.append(line+"n");
                }
        is.close();
        result = sb.toString();
         result.trim();
    }
    catch(Exception e)
    {
        Log.e("log-tag","Error"+e.toString());
    }
    try
    {
        JSONArray jArray = new JSONArray(result);
        for(int i=0;i<jArray.length();i++)
        {
            JSONObject json_data = jArray.getJSONObject(i);


            ID.add((String) json_data.get("id"));
            Name.add((String) json_data.get("name"));
            Pts.add((String)json_data.get("pts"));
        }
    }
    catch(Exception e)
    {
        Log.e("log-tag","Error2"+e.toString());
    }
}

我怎样才能做到这一点?我不知道 我以为是这个

catch(Exception e)
{
    Log.e("log-tag","Keine Verbindung"+e.toString());
    Toast.makeText(getApplicationContext(), "Keine Verbindung!", Toast.LENGTH_SHORT).show();
}

可以完成这项工作,但是当我没有连接时(因为我将手机设置为飞行模式),只有一个无尽的 ProgressDialog :(

最佳答案

正如 Jon Taylor 提到的,这是一个 duplicate question

您可以使用以下代码来执行此操作

此方法检查移动设备是否连接到互联网,如果连接则返回 true,如果未连接则显示警告框:

private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
// There are no active networks.
AlertDialog.Builder altDialog= new AlertDialog.Builder(this);
altDialog.setMessage("No network connection!");
return false;
} else
return true;
}

将其添加到 list 文件中,

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

编辑:要获取网络类型,您可以使用以下代码 fragment :

ConnectivityManager conMan = (ConnectivityManager)  getSystemService(Context.CONNECTIVITY_SERVICE);

//mobile
State mobile = conMan.getNetworkInfo(0).getState();

//wifi
State wifi = conMan.getNetworkInfo(1).getState();

然后像这样使用它:

if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) {
//mobile
} else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) {
//wifi
}

关于java - Android App判断是否有连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11359857/

相关文章:

android - 使用 teamCity 构建到 s3 后上传 ipa 和 apk

java - 将图像和文本字段放在同一类中

java - 如何让主线持续?

java - 如何在选择文件时扩展/收缩 JTextField

android - 如何在较低的android版本中支持textView.setTextIsSelectable?

android - 这个 Android 示例是否可以安全使用,内存泄漏方面?

android - 自定义 adapter.notifyDataSetChanged() 不工作

java - 如何转换日期格式

java - 选择 : Migrating from Classic ASP to . NET 或迁移到开源平台

android - 布局定义。 "You must supply a layout_width attribute."