Конфигурация безопасности сети не указана, используется платформа по умолчанию для дизайна входа в 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"