Я новичок в разработке приложений для Android (даже в Java).
У меня есть собственные данные с моих метеостанций, и я декодирую их в фоновом режиме из JSON - что все в порядке, прекрасно.
в функции «onPostExecute» я вызываю другую функцию, называемую «сохранить». И в этой функции мне нужен «контекст».
Как мне определить этот «контекст»? или откуда взять? Не могли бы вы указать мне пример?
Я попробовал несколько вариантов Google, но каждый раз приложение перестает работать. (Android 5.1 - Lenovo P70) - Я не могу использовать виртуальное устройство на своем компьютере, поэтому после подключения к Android Studio я тестирую свое приложение непосредственно на телефоне.
Буду благодарен за любые советы.
Вот "fetchData.java", которая содержит функцию "fetchData", которая вызывается из "MainActivity.java", когда я нажимаю кнопку.
package arduino.weatherstation;
import android.content.Context;
import android.os.AsyncTask;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class fetchData extends AsyncTask<String,String,String> {
String data = "";
private String dataParsed = "";
private String singleParsed = "";
private String last_data = "";
private static final String FILE_NAME = "lastdata.txt";
@Override
protected String doInBackground(String... params) {
String result = "";
try {
URL url = new URL("https://***.cz");
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while(line != null) {
line = bufferedReader.readLine();
data = data + line;
}
JSONArray JA = new JSONArray(data);
for(int i = 0; i < JA.length(); i++) {
JSONObject JO = (JSONObject) JA.get(i);
singleParsed = "Day:" + JO.get("Day") + "\n"+
"Time:" + JO.get("Time") + "\n"+
"Temperature:" + JO.get("Temperature") + "\n"+
"Humidity:" + JO.get("Humidity") + "\n"+
"Pressure:" + JO.get("Pressure") + "\n"+
"Light:" + JO.get("Light") + "\n"+
"Rain:" + JO.get("Rain") + "\n"+
"City:" + JO.get("City") + "\n"+
"Country:" + JO.get("Country") + "\n"+
"Id:" + JO.get("Id") + "\n";
dataParsed = dataParsed + singleParsed;
if(i == (JA.length() - 1)) {
last_data = "Day:" + JO.get("Day") + "\n"+
"Time:" + JO.get("Time") + "\n"+
"Temperature:" + JO.get("Temperature") + "\n"+
"Humidity:" + JO.get("Humidity") + "\n"+
"Pressure:" + JO.get("Pressure") + "\n"+
"Light:" + JO.get("Light") + "\n"+
"Rain:" + JO.get("Rain") + "\n"+
"City:" + JO.get("City") + "\n"+
"Country:" + JO.get("Country") + "\n"+
"Id:" + JO.get("Id") + "\n";
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(String aVoid) {
super.onPostExecute(aVoid);
MainActivity.data.setText(last_data);
save(last_data);
}
public void save(String toSave) {
String text = toSave;
FileOutputStream fos = null;
try {
fos = context.openFileOutput(FILE_NAME, Context.MODE_PRIVATE);
fos.write(text.getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}