首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android App判断是否有连接

问Android App判断是否有连接
EN

Stack Overflow用户
提问于 2012-07-06 17:48:42
回答 1查看 94关注 0票数 0

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

我如何确定我的应用程序是否具有互联网连接?

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

代码语言:javascript
复制
    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());
    }
}

我怎样才能做到这一点呢?我不知道我是怎么想的

代码语言:javascript
复制
catch(Exception e)
{
    Log.e("log-tag","Keine Verbindung"+e.toString());
    Toast.makeText(getApplicationContext(), "Keine Verbindung!", Toast.LENGTH_SHORT).show();
}

我可以完成这项工作,但当我没有连接时(因为我将手机设置为飞行模式),就会有没完没了的ProgressDialog :(

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-06 17:55:32

正如乔恩·泰勒提到的,这是一个duplicate question

您可以使用以下代码来完成此操作

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

代码语言:javascript
复制
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;
}

将此代码添加到清单文件中,

代码语言:javascript
复制
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

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

代码语言:javascript
复制
ConnectivityManager conMan = (ConnectivityManager)  getSystemService(Context.CONNECTIVITY_SERVICE);

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

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

然后像这样使用它:

代码语言:javascript
复制
if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) {
//mobile
} else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) {
//wifi
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11359857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档