-3

I have been trying to get some very simple code to work which should read an online file and print the contents of that file in the log. At first I didn't know that it needed to be handled in a seperate thread so I left it in the onCreate Method. Now I put it into a seperate Thread with the help of this question: How to use separate thread to perform http requests but the app still crashes! Since I'm desperate to get this working so I can keep on learning how to program this app, I will insert the exact code I used:

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();
    }
}

In the log the error message is being sent:

01-05 07:40:33.320 9601-9622/com.dan6erbond.schoolhelper I/TAG: Error occured!

I'd be really happy if someone could help me with this problem. It's probably very simple but I just started coding in Android Studio so I'm really new to this.

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
Dan6erbond
  • 9
  • 1
  • 2

1 Answers1

0

I just needed to add the INTERNET permission. I figured that out by printing the error message:

Log.i("TAG", e.getMessage());

Which resulted in this:

01-05 08:05:10.806 11815-11838/com.dan6erbond.schoolhelper I/TAG: Permission denied (missing INTERNET permission?)

I just added this to the Android Manifest:

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

Thanks everyone for your help!

Dan6erbond
  • 9
  • 1
  • 2