как решить java. net .SocketException: сокет не выполнен: EPERM (операция не разрешена) - PullRequest
0 голосов
/ 13 февраля 2020

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

public class registerInterface extends AppCompatActivity {
    private EditText editTextUsername, editTextPassword, editTextEmail;
    private Button buttonRegister, backToLogin;
    private ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.registration_interface);
        editTextUsername = findViewById(R.id.username);
        editTextPassword = findViewById(R.id.password);
        editTextEmail = findViewById(R.id.email);

        buttonRegister = findViewById(R.id.register);
        backToLogin = findViewById(R.id.go_back_login);

        progressDialog = new ProgressDialog(this);

        buttonRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                registerUser();
            }
        });

    }

    public void registerUser(){
        final String email = editTextEmail.getText().toString().trim();
        final String password = editTextPassword.getText().toString().trim();
        final String username = editTextUsername.getText().toString().trim();

        progressDialog.setMessage("Registering...");
        progressDialog.show();

        StringRequest stringRequest = new StringRequest(Request.Method.POST, DataBaseConstants.URL_REGISTER, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                progressDialog.dismiss();
                try {
                    JSONObject jsonObject = new JSONObject(response);
                    Toast.makeText(getApplicationContext(), jsonObject.getString("message"), Toast.LENGTH_LONG).show();
                } catch (JSONException e){
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                progressDialog.hide();
                Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();

            }
        }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("username", username);
                params.put("email", email);
                params.put("password", password);
                return params;
            }
        };

        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }
}

Я уже добавил это в моем AndroidManifest. xml, но все равно не работает:

<uses-permission android:name="android.promission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

Я не знаю, если это проблема с IP-адресом, но я просто не могу ее выяснить.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2020

Привет, и я нашел решение. Это вопрос виртуального устройства, в моей версии API 29 подключение к сети запрещено. Я рекомендую использовать стороннее виртуальное устройство, и теперь я использую «NetEase MUMU», и если у вас возникнут похожие вопросы, вы можете проверить его.

0 голосов
/ 13 февраля 2020

Первый

Просто удалите приложение из эмулятора, затем снова запустите, и он заработает. У меня возникла такая же проблема.

Иногда эта проблема возникает при возникновении проблемы с эмулятор.

Во-вторых -

Возможно, проблема в вашей сети, Wi-Fi, к которому вы подключены в эмуляторе, не позволяет подключиться к вызываемому вами API-интерфейсу. .

...