Créer un session en android
jong_ye
Messages postés
22
Statut
Membre
-
jong_ye Messages postés 22 Statut Membre -
jong_ye Messages postés 22 Statut Membre -
bonjour tout le monde,je travaille sur une application android et plus précisément sur la page log-in qui permet à un utilisateur de se connecter et d'accéder à son compte
mon application est déjà reliée avec une base de donnée c-à-d le truc de la vérification du mot de passe et du user entré avec ceux dans la base de données par l'utilisateur se passe bien ,ce que je veux moi c'est créer une session genre même si utilisateur passe à une autre activité de l'application il reste connecte sans qu'il doit login-in encore
et merci
mon application est déjà reliée avec une base de donnée c-à-d le truc de la vérification du mot de passe et du user entré avec ceux dans la base de données par l'utilisateur se passe bien ,ce que je veux moi c'est créer une session genre même si utilisateur passe à une autre activité de l'application il reste connecte sans qu'il doit login-in encore
et merci
A voir également:
- Créer un session en android
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Créer un lien pour partager des photos - Guide
- Android recovery - Guide
- Créer un compte gmail - Guide
4 réponses
non j'utilise pas un Webservice ,voila mon code pour que vous puissiez comprendre
package com.example.mainviewactivity;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.R.string;
import android.net.ParseException;
import android.os.Bundle;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
EditText etUser ;
EditText etPass ;
Button bLogin ;
String username;
String password;
HttpClient httpclient ;
HttpPost httppost;
ArrayList<NameValuePair> nameValuePairs ;
HttpResponse response;
HttpEntity entity ;
String EXTRA_LOGIN="login";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialise();
}
private void initialise()
{
etUser = (EditText) findViewById(R.id.user_email);
etPass = (EditText) findViewById(R.id.user_password);
bLogin = (Button) findViewById(R.id.connect);
bLogin.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
httpclient = new DefaultHttpClient();
httppost = new HttpPost("http://10.0.2.2/android_connect/index.php");
username=etUser.getText().toString();
password= etPass.getText().toString();
//URL url=new URL(LoginDisplayActivity.);
try{
nameValuePairs =new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("username",username));
nameValuePairs.add(new BasicNameValuePair("password",password));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
response = httpclient.execute(httppost);
if(response.getStatusLine().getStatusCode()==200){
entity = response.getEntity();
if(entity!=null){
InputStream instream=entity.getContent();
JSONObject jsonResponse=new JSONObject(convertStreamToString(instream));
String retUser=jsonResponse.getString("username");
String retPasss=jsonResponse.getString("userpass");
// validate login
if(username.equals(retUser)&& password.equals(retPasss)){
/*SharedPreferences sp=getSharedPreferences("logindetails", 0);
SharedPreferences.Editor spedit=sp.edit();
spedit.putString("username",username);
spedit.putString("userpass",password);//may not need to store password
// close editor
spedit.commit();*/
etUser.setText("");
etPass.setText("");
Intent intent = new Intent(MainActivity.this, LoginDisplayActivity.class);
//intent.putExtra(EXTRA_LOGIN, etUser.getText().toString());
//intent.putExtra(EXTRA_PASSWORD, pass.getText().toString());
startActivity(intent);
}
else{
Toast.makeText(MainActivity.this,
R.string.champs_erronees,
Toast.LENGTH_SHORT).show();
return;
}
}
}
}catch(Exception e){
e.printStackTrace();
Toast.makeText(MainActivity.this,
R.string.champs_erronees,
Toast.LENGTH_SHORT).show();
return;
}
}//end on click
});
} //end initialise
private static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
C'est du code que tu as récupéré, non? Car le stockage des infos de connexion est fait.
Quelques remarques:
- c'est plus de moyen d'envoyer des données de connexion en clair. A minima, le password devrait être encodé
- c'est encore plus moyen d'avoir, en retour JSON, les infos de connexion. Il faut plutôt renvoyer un code OK/KO
- et, comble de l'horreur, ce n'est pas à toi de vérifier les infos de connexion mais au serveur
Ce que tu dois stocker, c'est plutôt un "jeton", un cookie, un "truc" qui te dit que l'utilisateur s'est authentifié...
Quelques remarques:
- c'est plus de moyen d'envoyer des données de connexion en clair. A minima, le password devrait être encodé
- c'est encore plus moyen d'avoir, en retour JSON, les infos de connexion. Il faut plutôt renvoyer un code OK/KO
- et, comble de l'horreur, ce n'est pas à toi de vérifier les infos de connexion mais au serveur
Ce que tu dois stocker, c'est plutôt un "jeton", un cookie, un "truc" qui te dit que l'utilisateur s'est authentifié...