Конфигурация безопасности сети не указана, используется платформа по умолчанию для дизайна входа в Android

Я впервые задаю вопрос, так как я действительно сталкиваюсь с большими проблемами, я нахожусь на пути к созданию страницы входа / регистрации для Android, которая может взаимодействовать с удаленным сервером, я следовал некоторым учебникам, но не могу получить идеальные результаты, даже если я следует много уроков, я надеюсь, что кто-то может мне помочь,

Вот мой код, я сначала создаю базу данных mysql в localhost и пишу следующий код php для соединения приложения Android и dababase:

<?php
$con = mysqli_connect("localhost", "myaccount", "mypassword", "mytest");

$name = $_POST["name"];
$age = $_POST["age"];
$username = $_POST["username"];
$password = $_POST["password"];

$statement = mysqli_prepare($con, "INSERT INTO user (name, username, age, password) VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password);
mysqli_stmt_execute($statement);

$response = array();
$response["success"] = true;  

echo json_encode($response);
?>

Затем я создаю приложение для Android, которое использует volley framework для работы с базой данных. Вот код кнопки "зарегистрироваться", когда я заполнил информацию и щелкнул ее, я надеюсь, что она может отправлять данные tp mysql,

RegisterButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final String name = etName.getText().toString();
            final String username = etUsername.getText().toString();
            final int age = Integer.parseInt(etAge.getText().toString());
            final String password = etPassword.getText().toString();

            Response.Listener<String> responseListener = new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonResponse = new JSONObject(response);
                        boolean success = jsonResponse.getBoolean("success");
                        if (success) {
                            Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
                            RegisterActivity.this.startActivity(intent);
                        } else {
                            AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
                            builder.setMessage("Register Failed")
                                    .setNegativeButton("Retry", null)
                                    .create()
                                    .show();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            };

            RegisterRequest registerRequest = new RegisterRequest(name, username, age, password, responseListener);
            RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this);
            queue.add(registerRequest);
        }
    });  

Я также перечисляю RegisterRequest код функции следующим образом:

public class RegisterRequest extends StringRequest {
private static final String REGISTER_REQUEST_URL = "http://my computer ipv4/Register11.php";
private Map<String, String> params;

public RegisterRequest(String name, String username, int age, String password, Response.Listener<String> listener) {
    super(Method.POST, REGISTER_REQUEST_URL, listener, null);
    params = new HashMap<>();
    params.put("name", name);
    params.put("age", age + "");
    params.put("username", username);
    params.put("password", password);
}

@Override
public Map<String, String> getParams() {
    return params;
}
}  

Лично я думаю, что я закончил всю необходимую информацию, но когда я тестирую свое приложение andriod, я не могу отправить данные в базу данных, я проверил свой код за весь день и все еще не могу решить его, здесь я публикую свою register страница,
страница регистрации, страница регистрации после завершения информации

Когда я нажимаю кнопку "зарегистрироваться", приложение выдаст предупреждение

No Network Security Config specified, using platform default  

Я понимаю, что это не ошибка, но мое приложение было остановлено здесь, я имею в виду, когда я нажимаю кнопку, приложение не отвечает и отображает только указанное выше предупреждение. Кроме того, информация не отправляется в базу данных, я пытался решить это долго, но все равно получаю ошибку, я надеюсь, что кто-то может мне помочь. Я был бы очень признателен!

1 ответ

Помогло изменение в файле манифеста

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    ...
    <application
        ...
        android:usesClearTextTraffic="true"
        android:icon="@mipmap/ic_launcher"
        ...>
        ...
    </application>
</manifest>  

В документации по настройке безопасности сети от Google вы можете исправить это, добавив следующее:

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    ...
    <application
        ...
        android:usesClearTextTraffic="true"
        ...>
        ...
    </application>
</manifest>  

В ваш файл AndroidManifest.xml

Для получения дополнительной информации вы можете проверить документ Google, чтобы настроить конфигурацию сетевой безопасности здесь - " https://developer.android.com/training/articles/security-config"

Другие вопросы по тегам