Bonjour à tous,
je viens solliciter un peu votre coup de main sur un projet Android sur lequel je travaille

J'essaye de connecter mon application à la base de données via une page de login et/ou d'enregistrement;

j'ai comme page déjà que je vous donne ci-dessous ;

- RegisterActivirty ;

- MainActivity

- MySingleton

PB :

- en exécutant directement mon fichier de script PHP, tout est parfait et les insertions n'ont aucun problème !!
- voila, une première fois après avoir compiler et tenter de lancer l'application a travers mon émulateur, j'ai reçu un message d'erreur suivant :
com.android.volley.NoConnectionError : java.io.IOException : Context HTTP Taffic to (mon adresse IP) not permitted
j'ai fouillé pour essayer de comprendre mon erreur, et je suis tombé sur la solution portant 02 options :
- enlever le 's' dans mon http ..... Resultat : plus de messages d'erreure, mais mon activité de login ne bouge pas vers la seconde activité

- dans mon manifest, ajouter la permission <uses-permission android:name="android.permission.INTERNET" /> et android:usesCleartextTraffic="true"> .... Résultat, rien ne se passe, pire le premier message n'apparait même plus jamais !!!

Alors, je suis plus que perdu, quelqun pourrait-il me donner un coup de main pour comprendre mon pb et me permettre d'évoluer sur mon projet ?

RegisterActivity.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package com.ibth.newspacemembres;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
 
import com.android.volley.AuthFailureError;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.rengwuxian.materialedittext.MaterialEditText;
 
import java.util.HashMap;
import java.util.Map;
 
public class RegisterActivity extends AppCompatActivity {
    MaterialEditText userName, email, password, mobile;
    RadioGroup radioGroup;
    Button register;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
 
        userName = findViewById(R.id.username);
        email = findViewById(R.id.email);
        password = findViewById(R.id.password);
        mobile = findViewById(R.id.mobile);
        radioGroup = findViewById(R.id.radiogp);
        register = findViewById(R.id.register);
 
        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String txtUserName = userName.getText().toString();
                String txtEmail = email.getText().toString();
                String txtPassword = password.getText().toString();
                String txtMobile = mobile.getText().toString();
 
                if (TextUtils.isEmpty(txtUserName) || TextUtils.isEmpty(txtEmail) ||
                        TextUtils.isEmpty(txtPassword) || TextUtils.isEmpty(txtMobile) ){
                    Toast.makeText(RegisterActivity.this, "All fields are requires", Toast.LENGTH_SHORT).show();
                }
 
                else{
                    int genderId = radioGroup.getCheckedRadioButtonId();
                    RadioButton selected_Gender = radioGroup.findViewById(genderId);
                    if (selected_Gender == null){
                        Toast.makeText(RegisterActivity.this, "Selected Gender Please", Toast.LENGTH_SHORT).show();
                    }
 
                    else {
                        String selectGender = selected_Gender.getText().toString();
                        registerNewAccount(txtUserName, txtEmail, txtPassword, txtMobile, selectGender);
 
 
                    }
                }
 
 
 
            }
        });
    }
 
    private void registerNewAccount(String username, String email, String password, String mobile, String gender){
        ProgressDialog progressDialog = new ProgressDialog(RegisterActivity.this);
        progressDialog.setCancelable(false);
        progressDialog.setIndeterminate(false);
        progressDialog.setTitle("Resgistering new Account");
        String uRl = "http://localhost/loginregister/registration3.php";
        StringRequest request = new StringRequest(Request.Method.POST, uRl, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                if (response.equals("successfully registered")){
                    progressDialog.dismiss();
                    Toast.makeText(RegisterActivity.this, response, Toast.LENGTH_SHORT).show();
                    startActivity(new Intent(RegisterActivity.this, MainActivity.class));
                    finish();
                }
                else {
                    progressDialog.dismiss();
                    Toast.makeText(RegisterActivity.this, response, Toast.LENGTH_SHORT).show();
 
                }
 
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                progressDialog.dismiss();
                Toast.makeText(RegisterActivity.this, error.toString(), Toast.LENGTH_SHORT).show();
 
            }
 
        }){
            protected Map<String, String> getParams() throws AuthFailureError{
                HashMap<String, String> param = new HashMap<>();
                param.put("username", username);
                param.put("email", email);
                param.put("psw", password);
                param.put("mobile", mobile);
                param.put("gender", gender);
                return param;
            }
 
        };
        request.setRetryPolicy(new DefaultRetryPolicy(30000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT ));
        MySingleton.getmInstance(RegisterActivity.this).addToRequestQueue(request);
 
 
    }
}
MainActivity.java

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.ibth.newspacemembres;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
 
import com.rengwuxian.materialedittext.MaterialEditText;
 
public class MainActivity extends AppCompatActivity {
    MaterialEditText email, password;
    Button login, register;
    CheckBox loginState;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        login = findViewById(R.id.login);
        loginState = findViewById(R.id.checkbox);
        email = findViewById(R.id.email);
        password = findViewById(R.id.password);
        register = findViewById(R.id.register);
 
        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, RegisterActivity.class));
                finish();
            }
        });
 
 
    }
}
MySingleton.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.ibth.newspacemembres;
 
import android.content.Context;
 
import com.android.volley.Cache;
import com.android.volley.Network;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.BasicNetwork;
import com.android.volley.toolbox.DiskBasedCache;
import com.android.volley.toolbox.HurlStack;
import com.android.volley.toolbox.Volley;
 
public class MySingleton {
 
    private static MySingleton mInstance;
    private RequestQueue mRequestQueue;
    private Context mctx;
 
    public MySingleton(Context mctx) {
        this.mctx = mctx;
        mRequestQueue = getmRequestQueue();
    }
 
    public RequestQueue getmRequestQueue(){
        if (mRequestQueue == null){
            Cache cache = new DiskBasedCache(mctx.getCacheDir(), 1024*1024);
            Network network = new BasicNetwork(new HurlStack());
            mRequestQueue = new RequestQueue(cache, network);
            mRequestQueue = Volley.newRequestQueue(mctx.getApplicationContext());
        }
 
        return  mRequestQueue;
    }
 
    public  static synchronized  MySingleton getmInstance(Context context){
        if (mInstance == null){
            mInstance = new MySingleton(context);
        }
        return mInstance;
 
    }
 
    public <T> void addToRequestQueue(Request<T> request){
        mRequestQueue.add(request);
    }
}
AndroidManifest.xml
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ibth.newspacemembres">
 
    <uses-permission android:name="android.permission.INTERNET" />
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.NewSpaceMembres"
        android:usesCleartextTraffic="true">
 
        <activity android:name=".AppStartActivity"></activity>
        <activity android:name=".RegisterActivity" />
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>

voila, désoler pour les eventuelles fautes dans mon message .... je suis au bout de 03 jours sans sommeil sur ce probleme !!!

Merci à tous