Я пытаюсь прочитать текстовый файл из моего onedrive, мне нужно проверить версию базы данных и при необходимости обновить.android read textfile from web
Это пример моего кода:
private void checkVersion() {
try {
int dbversion = prefs.getInt("dbversion", 1);
int dblastversion;
URL url = new URL("");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
str = in.readLine();
in.close();
System.out.println(str);
dblastversion = Integer.valueOf(str);
if (dbversion < dblastversion)
System.out.println("updates available");
} catch (IOException e) {
e.printStackTrace();
}
}
Когда я пытаюсь запустить сбой приложения, и я получил эту ошибку из LogCat:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ex.example/com.ex.example.ActMenu}: android.os.NetworkOnMainThreadException
На этой линии
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
Кто-нибудь знает, в чем проблема? Или лучше использовать другое облако для хранения текстового файла. Спасибо за помощь.
UPDATE 2
Ok, как GPRathour сказал, что я обновил свой код к этому:
class Getversion_Async extends AsyncTask<Void, Void, Void> {
protected void onPreExecute() {
}
@Override
protected Void doInBackground(Void... arg0) {
System.out.println("starting");
try {
URL url = new URL("https://onedrive.live.com/redir?resid=b9186f8cb138a030!56556&authkey=!AFmrzOGv_OMArzo&ithint=file%2ctxt");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
str = in.readLine();
in.close();
System.out.println(str);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(final Void unused) {
System.out.println("ended");
}
}
И я заехать й OnCreate, как это тест:
new Getversion_Async().execute();
Хорошо это код работает нормально Я использую сайт для размещения файла, и ссылка заканчивается на .txt
и работает отлично, но я не могу отредактировать файл. Кто-нибудь знает, как я могу это сделать с помощью onedrive?
Не используйте System.out.println(), используйте Log.d ("значение", "закончилось"); –
Я отредактировал вопрос agaig. –