【发布时间】:2018-01-05 07:46:49
【问题描述】:
我一直试图让一些非常简单的代码工作,它应该读取一个在线文件并在日志中打印该文件的内容。起初我不知道它需要在单独的线程中处理,所以我将它留在了 onCreate 方法中。现在我在这个问题的帮助下将它放入一个单独的线程中:How to use separate thread to perform http requests 但应用程序仍然崩溃!由于我迫切希望让它工作,以便继续学习如何编写这个应用程序,我将插入我使用的确切代码:
package com.dan6erbond.schoolhelper;
import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import android.os.StrictMode;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
private String link = "https://dan6erbond.github.io/I1A/Documents/Zusammenfassungen/Zusammenfassungen.json";
String content;
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
Log.i("TAG", content);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Thread downloadFile = new Thread(new Runnable(){
@Override
public void run(){
try {
URL url = new URL(link);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
String str;
while ((str = in.readLine()) != null) {
content += str;
}
Log.i("TAG", content);
in.close();
} catch (Exception e) {
Log.i("TAG", "Error occured!");
}
handler.sendEmptyMessage(0);
}
});
downloadFile.start();
}
}
在日志中正在发送错误消息:
01-05 07:40:33.320 9601-9622/com.dan6erbond.schoolhelper I/TAG: Error occured!
如果有人能帮助我解决这个问题,我会非常高兴。这可能很简单,但我刚开始在 Android Studio 中编码,所以我真的很陌生。
【问题讨论】:
-
catch (Exception e) { Log.i("TAG", "Error occured!"); }尝试登录真正的异常信息 -
发生了什么样的错误?它不存在于您的代码中。而不是“发生错误”,而是使用 e.getMessage() 来了解确切的错误。
-
试过了,没用:(
-
抛出以下错误:01-05 08:05:10.806 11815-11838/com.dan6erbond.schoolhelper I/TAG:权限被拒绝(缺少 INTERNET 权限?)
标签: java android multithreading http request