Android应用无法在某些设备上连接到互联网,但其他设备无法连接

时间:2013-11-23 22:29:10

标签: android

我正在编写一个具有多个功能的应用程序,这些功能使用HTTPConnection连接到互联网并下载数据。我已经在几个设备上进行了测试,但是应用程序内部的连接似乎在不同的设备上被击中或错过。我是;断言连接在三星设备上不起作用。我在想,因为它还不是一个“官方”许可应用程序,连接失败了。可能是某种操作系统的差异吗?

以下代码应该连接到互联网并将文字下载到文件中。它适用于某些设备,但在其他设备上,它最终会创建一个空白文件并抛出异常。

 try{ 
         URL url = new URL("*" + currQuickList + ".txt");
           URLConnection urlConnection = url.openConnection();
           urlConnection.setUseCaches(false);
           int i = 0;  

               // Read all the text returned by the server
       BufferedReader in = new BufferedReader(new InputStreamReader(
                urlConnection.getInputStream()));
        String str;
        int count = Integer.parseInt(in.readLine());
        int[] a = createOrderedList(count,quickListLen);
        int d = 0;
        int g = 0;
        while ((str = in.readLine()) != null && d < a.length) {
            // str is one line of text; readLine() strips the newline
            // character(s)

            if(a[d] == g)
            {words.add(str);
            d++;
            }
            g++;

        }

             in.close();


                OutputStream fo = new FileOutputStream(dir);  
                 PrintWriter p = new PrintWriter(fo);
                 p.print(packageWords2(words) +"\n");

                 p.close();
                 fo.close();

                 System.out.println("file created: "+dir);
                 //files.add(wordText);

                }
                catch(Exception e){
                    e.printStackTrace();
                    errorDialog(e);
                }

1 个答案:

答案 0 :(得分:2)

在下载或使用互联网之前检查您的互联网连接。您可以试试这个

public static boolean isConnectingToInternet(Context context) {
    ConnectivityManager connectivity = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity != null) {
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
        if (info != null)
            for (int i = 0; i < info.length; i++)
                if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }

    }
    return false;
}