I'm just learning by trying create simple app in android studio (JAVA) :) I create code working on emulator(oreo). After build apk and instal it on phone (Nokia 8.1) it doesnt work. No errors while testing on emulator :/
Here is my code:
package com.stobolewski.jsonsavetest;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private List<String> menuOptions;
private List<String> dataList;
private String jasonDataFile= "";
private TextView txtShowJSON;
private Button btnDoAction;
private Button btnClear;
private Button btnLoad;
private RequestQueue myJSONRequest;
private String url = "http://brave-art.pl/news/data.jason";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtShowJSON = (TextView) findViewById(R.id.txtShowJSON);
menuOptions = new ArrayList();
btnDoAction = (Button) findViewById(R.id.btnAction);
btnClear = (Button) findViewById(R.id.btnClear);
btnLoad = (Button) findViewById(R.id.btnLoad);
myJSONRequest = Volley.newRequestQueue(this);
//jasonParse("menu");
jasonParse();
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
txtShowJSON.setText("Clear text view...");
}
});
btnLoad.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
String message;
FileInputStream fis = null;
fis = openFileInput("data.json");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader bufferedReader = new BufferedReader(isr);
StringBuffer stringBuffer = new StringBuffer();
while ((message = bufferedReader.readLine()) != null) {
stringBuffer.append(message + "\n");
txtShowJSON.setText("");
txtShowJSON.setText(stringBuffer.toString());
txtShowJSON.setVisibility(View.VISIBLE);
}
}
catch (Exception e){
e.printStackTrace();
}
}
});
btnDoAction.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String data = "";
Log.i("INFO", "WE ARE HERE....");
for(int i=0; i<menuOptions.size(); i++){
data += menuOptions.get(i) + "\n";
}
try {
Log.i("INFO", "WE ARE IN TRY ...");
//FileOutputStream output = new FileOutputStream("data.json", false);
FileOutputStream output = null;
output = openFileOutput("data.json", MODE_PRIVATE);
byte[] array = data.getBytes();
Log.i("INFO", "LOAD TO BYTE ARRAY...");
// Writes byte to the file
output.write(array);
Log.i("INFO:", "Data saved ...");
output.flush();
output.close();
}
catch(IOException e) {
e.getStackTrace();
}
txtShowJSON.setText(data);
Log.i("INFO", data);
}
});
}
public void jasonParse(){
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
String jasonArray = response.toString();
menuOptions.add(jasonArray);
String message;
FileInputStream fis = openFileInput("data.jason");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader bufferedReader = new BufferedReader(isr);
StringBuffer stringBuffer = new StringBuffer();
while ((message=bufferedReader.readLine())!=null){
stringBuffer.append(message + "\n");
txtShowJSON.setText(stringBuffer.toString());
txtShowJSON.setVisibility(View.VISIBLE);
}
Log.i("VALUE1", "my Value: ");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error)
{
error.printStackTrace();
}
});
myJSONRequest.add(request);
}
public void jasonParse(String tableName){
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jasonArray = response.getJSONArray(tableName);
//String jasonArray = response.toString();
for(int i = 0; i <jasonArray.length(); i++){
JSONObject jsonVersion = jasonArray.getJSONObject(i);
String menu_version = jsonVersion.getString("menu_version");
menuOptions.add(menu_version);
}
String message;
FileInputStream fis = openFileInput("data.jason");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader bufferedReader = new BufferedReader(isr);
StringBuffer stringBuffer = new StringBuffer();
while ((message=bufferedReader.readLine())!=null){
stringBuffer.append(message + "\n");
txtShowJSON.setText(stringBuffer.toString());
txtShowJSON.setVisibility(View.VISIBLE);
}
Log.i("VALUE1", "my Value: ");
} catch (JSONException | FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
myJSONRequest.add(request);
}
}
This is only way I can use "data from internet" my website hosting dowsnt allow to connect to database from "outside" - only local wordpress connection is allowed. Want to create simple app reading data "restaurant menu" from json file and show it in list view, etc.