下载txt文件导致应用崩溃。

3

我试图使用以下方法从互联网下载文件:

try { 
    URL url = new URL("http://sites.google.com/site/androidersite/text.txt");
    BufferedReader in =new BufferedReader(new InputStreamReader(url.openStream()));
    String str;
    while ((str = in.readLine()) != null) {  newline character(s)
    }  
    in.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
} 

我也更新了我的Android清单文件,并添加了以下行:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

应用程序在这一行崩溃:

BufferedReader in =new BufferedReader(new InputStreamReader(url.openStream()));

并弹出一个写有以下内容的日志文件:源未找到

2个回答

2

可能相关

http://www.javahotchocolate.com/tutorials/android.html#notfound http://stackoverflow.com/questions/4720593/source-not-found-error-in-android

           /* Open a connection to that URL. */
           URLConnection ucon = url.openConnection();

           /*
            * Define InputStreams to read from the URLConnection.
            */
           InputStream is = ucon.getInputStream();
           BufferedInputStream bis = new BufferedInputStream(is);

请点击此处查看示例 http://www.helloandroid.com/tutorials/how-download-fileimage-url-your-device

该示例演示了如何从URL下载文件或图像到您的设备。

2

这段代码是否在主应用程序线程上运行?您使用的是哪个版本的Android进行测试?如果在主(UI)线程上运行,那就不好了。它可能会抛出“在主线程上进行网络操作”异常,因为他们不鼓励你这样做 :)

您能提供一些实际的崩溃日志输出,或者可能更多执行代码的上下文吗?


然后,您需要将该代码移动到另一个线程。AsyncTask可能是一个不错的选择。这里有一些文档:http://developer.android.com/reference/android/os/AsyncTask.html 还有很多网络上的例子供参考。 - lyricsboy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接