Нет подключения к серверу
извиняюсь за отсутствие кода, если он будет нужен для решения проблемы - предоставлю.
Мною было написано приложение, котое обрабатывает http запросы. Сервер работает прекрасно. В AVD приложение работает корректно. Но после создания APK через Build -> Build Bundle(s) / APK(s) -> Build APK(s) и установки его на реальное устройство пропадает подключение к серверу. Вот пример: https://www.youtube.com/watch?v=ucZfJsiuYYo&ab_channel=vasapup .
Хочу заметить что доступ к интернету выдан. Как компьютер так и телефон находятся в одной сети и имеют доступ к интернету.
Моим предположением является отсутствие подписи разработчика.
С чем может быть связано такое поведение приложения после сборки?
UPD 1
private void loadStrings()
{
mQueue = Volley.newRequestQueue(this);
String url_head = "http://62.113.110.15:8080/rStrings";
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET,url_head, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try {
main_id_rSting = new long[response.length()];
main_name_rString = new String[response.length()];
main_code_rString = new String[response.length()];
temp = response.length();
for (int i = 0; i < response.length();i++){
JSONObject string_params_string_list = response.getJSONObject(i);
long string_id = string_params_string_list.getLong("id");
String string_name = string_params_string_list.getString("name");
String string_code = string_params_string_list.getString("code");
main_id_rSting[i]=string_id;
main_name_rString[i] = string_name;
main_code_rString[i] = string_code;
Log.i("Id", String.valueOf(main_id_rSting[i]));
Log.i("Id", main_name_rString[i]);
Log.i("Id", main_code_rString[i]);
Log.i("Id", String.valueOf(main_id_rSting.length));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() { // в случае возникновеня ошибки
@Override
public void onErrorResponse(VolleyError error) {
if (error instanceof TimeoutError) {
Toast.makeText(getApplicationContext(), "TimeoutError", Toast.LENGTH_SHORT).show();
} else if (error instanceof NoConnectionError) {
Toast.makeText(getApplicationContext(), "NoConnectionError", Toast.LENGTH_SHORT).show();
} else if (error instanceof AuthFailureError) {
Toast.makeText(getApplicationContext(), "AuthFailureError", Toast.LENGTH_SHORT).show();
//TODO
} else if (error instanceof ServerError) {
Toast.makeText(getApplicationContext(), "ServerError", Toast.LENGTH_SHORT).show();
//TODO
} else if (error instanceof NetworkError) {
Toast.makeText(getApplicationContext(), "NetworkError", Toast.LENGTH_SHORT).show();
//TODO
} else if (error instanceof ParseError) {
Toast.makeText(getApplicationContext(), "ParseError", Toast.LENGTH_SHORT).show();
//TODO
}
error.printStackTrace();
}
});
mQueue.add(request);
}
Ответы (1 шт):
Проблема заключается в том, что с версии Android 9 нельзя передавать открытый HTTP текст. Чтобы исправить данную ошибку нужно прописать в файле AndroidManifests.xml следующее:
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true" //Эту строчку нужно дописать
...>
...
</application>
</manifest>
И все заработает.