Проблема с JSON, не присваивается значение переменной
Я новичок в java. У меня возникла неприятная проблема. У меня переменная должна получать ссылку, которая прописана в json. Она получает ее, но только в этой функции: Тоесть если я впишу туда (Toast) showMessage(URL_LAUNCHER); то выходит сообщение с ссылкой, как надо
public void loadJSONFromURL(String url) // надо переписать
{
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>()//new Response.Listener< String>()
{
@Override
public void onResponse(String response) {
try {
JSONObject links = new JSONObject(response);
URL_CLIENT = links.getString("URL_CLIENT");
URL_FILES = links.getString("URL_FILES");
URL_CACHE = links.getString("URL_CACHE");
URL_LAUNCHER = links.getString("URL_LAUNCHER");
URL_NEWS = links.getString("URL_NEWS");
LAUNCHER_ACTUAL_VERSION = links.getString("LAUNCHER_ACTUAL_VERSION");
showMessage("Ссылка на лаунчер:"+URL_LAUNCHER);
CheckUpdateLauncher();
} catch (JSONException e) {
showMessage("JSON ERROR");
e.printStackTrace();
}
}
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),error.getMessage(),Toast.LENGTH_SHORT).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
А если я в других функциях попробую вывести: showMessage(URL_LAUNCHER), то будет пустая строка
UPD. New code:
private void loadJSONFromURL(String url) // надо переписать
{
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>()//new Response.Listener< String>()
{
@Override
public void onResponse(String response) {
try {
JSONObject links = new JSONObject(response);
String URL_CLIENT = links.getString("URL_CLIENT");
String URL_FILES = links.getString("URL_FILES");
String URL_CACHE = links.getString("URL_CACHE");
String URL_LAUNCHER = links.getString("URL_LAUNCHER");
String URL_NEWS = links.getString("URL_NEWS");
String LAUNCHER_ACTUAL_VERSION = links.getString("LAUNCHER_ACTUAL_VERSION");
Download(URL_LAUNCHER, PATH_DOWNLOADS);
showMessage("Ссылка на лаунчер:"+URL_LAUNCHER);
if(LAUNCHER_VERSION != LAUNCHER_ACTUAL_VERSION) {
/*File file = new File(PATH_LAUNCHER, "launcher" + ".apk");
if (file.exists()) {
file.delete();
}*/
Download(links.getString("URL_LAUNCHER"), PATH_DOWNLOADS);
InstallAPK("launcher");
} else showMessage("Обновлений для лаунчера нет");
} catch (JSONException e) {
showMessage("JSON ERROR");
e.printStackTrace();
}
}
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),error.getMessage(),Toast.LENGTH_SHORT).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void Download(final String _url, final String _path)
{
FileUtil.makeDir(FileUtil.getPackageDataDir(getApplicationContext()));
android.net.ConnectivityManager connMgr = (android.net.ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
android.net.NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
final String urlDownload = _url;
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(urlDownload));
final String fileName = URLUtil.guessFileName(urlDownload, null, null);
String Path = _path+fileName;
File file = new File(Path);
request.setDescription("URL - " + urlDownload);
request.setTitle(fileName);
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(_path, fileName);
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
}
else {
showMessage("Нет интернет-соединения.");
}
}