• Pour avoir accès au forum les nouveaux membres inscrits doivent obligatoirement se présenter et attendre que leur présentation soit approuvée par un membre du Staff.
  • Vous n'arrivez pas a publier ou a télécharger ! Merci de lire le Réglement
  • Spécialiste Electronique auto a Paris.

    Specialiste Auto vous proposes avec une Garantie a vie !!!! Suppression FAP ( DEFAP ) Suppression ADBLUE Reparation Calculateur Reparation EZS ELV Reprogrammation Adaptation Boite de vitesse Systeme hybrid Boitier module OCCASSION / NEUF Désactivation Volets de tubulures d'admission ...

    Plus d'information Clique ici

    Contacter nous au 0754373786

    Envoi Possible de Toute la France si vous étes pas de Paris

Tutoriel Créer une page de login et vérifier l'identification partie 2

The Mask

Que la Famille
Ancien Staff
Membre Actif
Inscrit
4 Mars 2014
Messages
1,251
Reaction score
4,137
Points
4,158
II-E. Activité secondaire - Login
L'activité Login est plus compliquée car il faut communiquer avec le script PHP une fois que les identifiants sont entrés et que l'utilisateur clique sur le bouton OK.
Voici le code commenté :

Code:
package de.demo.login;

import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
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.apache.http.params.HttpConnectionParams;
import org.apache.http.protocol.HTTP;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Looper;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import de.demo.main.R;

public class Login extends Activity
{
// Lien vers votre page php sur votre serveur
private static final String UPDATE_URL = "http://paddesite.pa.ohost.de/login.php";

public ProgressDialog progressDialog;

private EditText UserEditText;

private EditText PassEditText;

public void onCreate(Bundle savedInstanceState)
{

super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// initialisation d'une progress bar
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Please wait...");
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(false);
// Récupération des éléments de la vue définis dans le xml
UserEditText = (EditText) findViewById(R.id.username);

PassEditText = (EditText) findViewById(R.id.password);
Button button = (Button) findViewById(R.id.okbutton);

// Définition du listener du bouton
button.setOnClickListener(new View.OnClickListener()
{

public void onClick(View v)
{

int usersize = UserEditText.getText().length();

int passsize = PassEditText.getText().length();
// si les deux champs sont remplis
if (usersize > 0 && passsize > 0)
{

progressDialog.show();

String user = UserEditText.getText().toString();

String pass = PassEditText.getText().toString();
// On appelle la fonction doLogin qui va communiquer avec le PHP
doLogin(user, pass);

}
else
createDialog("Error", "Please enter Username and Password");

}

});

button = (Button) findViewById(R.id.cancelbutton);
// Création du listener du bouton cancel (on sort de l'appli)
button.setOnClickListener(new View.OnClickListener()
{

public void onClick(View v)
{
quit(false, null);
}

});

}

private void quit(boolean success, Intent i)
{
// On envoie un résultat qui va permettre de quitter l'appli
setResult((success) ? Activity.RESULT_OK : Activity.RESULT_CANCELED, i);
finish();

}

private void createDialog(String title, String text)
{
// Création d'une popup affichant un message
AlertDialog ad = new AlertDialog.Builder(this)
.setPositiveButton("Ok", null).setTitle(title).setMessage(text)
.create();
ad.show();

}

private void doLogin(final String login, final String pass)
{

final String pw = md5(pass);
// Création d'un thread
Thread t = new Thread()
{

public void run()
{

Looper.prepare();
// On se connecte au serveur afin de communiquer avec le PHP
DefaultHttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 15000);

HttpResponse response;
HttpEntity entity;

try
{
// On établit un lien avec le script PHP
HttpPost post = new HttpPost(UPDATE_URL);

List<NameValuePair> nvps = new ArrayList<NameValuePair>();

nvps.add(new BasicNameValuePair("username", login));

nvps.add(new BasicNameValuePair("password", pw));

post.setHeader("Content-Type", "application/x-www-form-urlencoded");
// On passe les paramètres login et password qui vont être récupérés
// par le script PHP en post
post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
// On récupère le résultat du script
response = client.execute(post);

entity = response.getEntity();

InputStream is = entity.getContent();
// On appelle une fonction définie plus bas pour traduire la réponse
read(is);
is.close();

if (entity != null)
entity.consumeContent();

}
catch (Exception e)
{

progressDialog.dismiss();
createDialog("Error", "Couldn't establish a connection");

}

Looper.loop();

}

};

t.start();

}

private void read(InputStream in)
{
// On traduit le résultat d'un flux
SAXParserFactory spf = SAXParserFactory.newInstance();

SAXParser sp;

try
{

sp = spf.newSAXParser();

XMLReader xr = sp.getXMLReader();
// Cette classe est définie plus bas
LoginContentHandler uch = new LoginContentHandler();

xr.setContentHandler(uch);

xr.parse(new InputSource(in));

}
catch (ParserConfigurationException e)
{

}
catch (SAXException e)
{

}
catch (IOException e)
{
}

}

private String md5(String in)
{

MessageDigest digest;

try
{

digest = MessageDigest.getInstance("MD5");

digest.reset();

digest.update(in.getBytes());

byte[] a = digest.digest();

int len = a.length;

StringBuilder sb = new StringBuilder(len << 1);

for (int i = 0; i < len; i++)
{

sb.append(Character.forDigit((a[i] & 0xf0) >> 4, 16));

sb.append(Character.forDigit(a[i] & 0x0f, 16));

}

return sb.toString();

}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}

return null;

}

private class LoginContentHandler extends DefaultHandler
{
// Classe traitant le message de retour du script PHP
private boolean in_loginTag = false;
private int userID;
private boolean error_occured = false;

public void startElement(String n, String l, String q, Attributes a)

throws SAXException

{

if (l == "login")
in_loginTag = true;
if (l == "error")
{

progressDialog.dismiss();

switch (Integer.parseInt(a.getValue("value"))
{
case 1:
createDialog("Error", "Couldn't connect to Database");
break;
case 2:
createDialog("Error", "Error in Database: Table missing");
break;
case 3:
createDialog("Error", "Invalid username and/or password");
break;
}
error_occured = true;

}

if (l == "user" && in_loginTag && a.getValue("id") != "")
// Dans le cas où tout se passe bien on récupère l'ID de l'utilisateur
userID = Integer.parseInt(a.getValue("id"));

}

public void endElement(String n, String l, String q) throws SAXException
{
// on renvoie l'id si tout est ok
if (l == "login")
{
in_loginTag = false;

if (!error_occured)
{
progressDialog.dismiss();
Intent i = new Intent();
i.putExtra("userid", userID);
quit(true, i);
}
}
}

public void characters(char ch[], int start, int length)
{
}

public void startDocument() throws SAXException
{
}

public void endDocument() throws SAXException
{
}

}

}
II-F. Manifest
Bon tout est fait il manque juste le manifest et vous pourrez tester votre application d'authentification !
Voici le manifest :

Code:
<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="de.demo.main"

android:versionCode="1"

android:versionName="1.0.0">

<application android:icon="@drawable/icon" android:label="LoginDemo">

<activity android:name="de.demo.main.Main" android:label="LoginDemo">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity android:name="de.demo.login.Login" android:label="LoginDemo">

<intent-filter>

<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

</activity>

</application>

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

</manifest>

III. Conclusion
Et voilà, c'est terminé !
Merci d'avoir suivi ce premier tutoriel et à bientôt ;).
NB : Le code est récupéré du site anddev.org. Les commentaires y ont été ajoutés.
 

Auteur Sujets similaires Forum Réponses Date
The Mask Tutoriel Créer une page de login et vérifier l'identification partie 1 Tutoriel Android 0
laurent68 ™ Template Créer un modèl à suivre dans une catégorie Template 0
laurent68 ™ Template Créer une barre voyante au dessus de la barre de navigation Modifications Templates 0
GUINNESS_-_973-WA Tutoriel [HD][Tuto vidéo CS6] Créer une signature Naruto Tutoriel Infographie 0
GUINNESS_-_973-WA Tutoriel Créer une bannière YouTube style MW2 Playercard ! (Photoshop) Tutoriel Infographie 3
The Mask Créer un nouveau bouton - Poster une nouvelle discussion Add-Ons 1
P Question Office365, créer un calendrier public ? Question & Aide 0
_/!\_SAX-_-LUNATiiCK_/!\_ AVIS Créer Un Forum Xenforo Questions & Aides 0
laurent68 ™ Homebrew [Switch] nspBuild pour créer vos propres applications aux format *.NSP Hack/ Homebrew 0
laurent68 ™ Homebrew [SNES Mini] Créer un USB Host sur votre Super NES Mini Hack/ Homebrew 1
Teqzo Discussion [PS4] PS4 Cover Generator pour créer des PSN Covers Discussions Ps4 2
laurent68 ™ Hack MakePFS pour créer des fichiers PFS pour PS4 Hack 0
laurent68 ™ Hack [PS Vita]] GB / GBC bubble maker pour créer vos bulles GB sur PS Vita Hack & Modz 0
laurent68 ™ [Wii U] Créer vos propres arènes de combat pour Smash Bros Wii U 0
HerdoxModz Créer un pkg installeur Pour Mod Menu SPRX [Non Tuto] Hack & Modz 7
ƒ.$๏ȼɨ€ţ¥ Tool TOOL pour créer des tenues au top [GTA V]Tool | Maj's | Eboot 10
laurent68 ™ Montage photo, pour créer vos avatars Infographie 6
GUINNESS_-_973-WA Tutoriel Créer ton avatar ou ta bannière Plexus :D Tutoriel Infographie 0
The Mask Tutoriel Comment créer un serveur minecraft Minecraft 0
The Mask Tutoriel Créer un backup avec Multiman Tutoriel Ps3 0
The Mask Tutoriel Créer un ISO Tutoriel Ps3 0
The Mask Créer un bloc en HTML sur le portail Add-Ons 0
The Mask Nombre minimum de messages pour créer des sujets dans certain forums Add-Ons 0
The Mask Créer un onglet avec menu déroulant Modifications Templates 4
miikad0 Discussion Comment créer un Eboot Mw3 [MW3] Discussions 3
The Mask Tutoriel Créer son propre thème PS3 ? Si vous souhaitez avoir un menu PS3 unique au monde Tutoriel Ps3 1
The Mask Tutoriel Créer sa première bibliothèque Android pour Unity Tutoriel Android 0
The Mask Tutoriel Créer un apk (partie 2) Tutoriel Android 0
The Mask Tutoriel Créer un apk Tutoriel Android 0
riri33 comment faire une clé sur bmw possédant un ews avec un AK90 Questions - Aide 0
zingahorse Demande Modification de CID sur une carte GPS Demande & Aide 0
L effectuer une connexion haut debit orange livebox5 W7 Informatique 1
aldo84 Tutorial comment configurer une carte reseau Réseau 8
FRACAM Bibliothèque RTA Recherche RTA pour une camionnette Citroën Jumper 2.2L 100cv de 2011 Bibliothèque RTA 1
Titeuf-skiim Tutorial Delphi 2015REV3 supprimer Une nouvelle mise à jour est disponible" Delphi 0
bxmax recherche une rta seat toledo2 1.9 tdi Bibliothèque RTA 6
Armand Jamot une Version avec Borneo 1 Can Clip 17
lolo05300 Présentation besoin d aide pour redémarrer une micra K11 de 1997 Présentation Des Nouveaux Membres 2
Djamsarifi Discussion Message d'erreur lors d'une Donation Discussion Général 4
pascal2960 A savoir avant d'acheter une sonde CAN CLIP Can Clip 13
mawoussiboris Question Restaurer une Peugeot 407 avec calculateur défaillant Questions - Aide 4
Colonel_Cyrus2 Présentation Une petite présentation s'impose Présentation Des Nouveaux Membres 2
bbs26 POSTE RESERVER AU PROBLEME LIER APRES UNE INTERVENTION AU VAG-COM-VCDS Vag-Com 7
philou08 Question Default de commande de la pompe d'additif Gazole sur une 407 HDI Questions - Aide 7
scorpionoir1982 Hack [PS4] Une méthode pour backporter du firmware 6.72 au 5.05 Hack 2
zeness avis sur une marque Autre 13
cbc Présentation une ptite presentation Présentation Des Nouveaux Membres 6
scorpionoir1982 Discussion Les CPU Intel ces 5 dernières années exposés à une faille critique. Discussion 2
Sousou93 Demande Recherche quelq'un pour me faire une video d'intro svp Demande & Aide 2
R aller encore une colle a la romu Peugeot - Citroën 7
Sujets similaires


















































Cliquez ici pour vous connecter en utilisant votre compte social
AdBlock Détecté

Nous comprenons, les publicités sont ennuyeuses !

Bien sûr, le logiciel de blocage des publicités fait un excellent travail pour bloquer les publicités, mais il bloque également les fonctionnalités utiles de notre site Web. Pour la meilleure expérience du site, veuillez désactiver votre AdBlocker.

J'ai désactivé AdBlock