jeudi 16 février 2012

[TUTO] Connexion-Android-MySQL, JSON PHP

La connectivité aux bases de données est parfois une opération délicate pour les débutants. Il existe plusieurs procédures qui permettent,dépuis un client android, de se connecter à une base de données. Dans ce tutoriel,je choisis de vous présenter l'une des méthodes, qui consiste à l'utilisation d'un fichier PHP qui convertit les données récupérées en format JSON(Le format JSON est une réprésentation structurée de données en Objet JavaScript, les données sont maniables très facilement dans ce format qui est aussi une sorte de compression.En PHP, la fonction json_encode() permet d'encoder en JSON.C'est un format très utile, il merite que vous y jettiez un coup d'oeil ( http://www.json.org/ )) . Cette méthode est donc très  avantageuse , souple et facile à mettre en oeuvre.
Voici tout d'abord l'environnement de travail dont je dispose:
  • SDK android
  • eclipse
  • EasyPHP/MySQL
Pour mieux comprendre la procédure, nous allons la schématiser:
A présent, pour concretiser cette procédure, je vous propose de créer une base de données qui contient les noms des écoles(INPT,EHTP,ENSIAS,INSEA) et l'exercice consistera donc à les recuperer et les afficher sur l'emulateur.(On dédie à l'INPT la tete de liste pour l'occasion).
Voici le résulat de l'affichage final:


I. Coté serveur
1.Base de données:
Notre base de données est simple et contient une table à deux colonnes comme suit:

2. Fichier PHP:
Le fichier php consiste à envoyer des réquetes sql à la base de données etablissements qui contient la table ecoles. Il récupère le résultat des réquetes, ensuite l'encode en JSON grace au simple appel de la fonction json_encode() comme dit précedemment.Son contenu ressemble à ça:
<?php
// on se connecte à notre base  pour recuperer les data
$base = mysql_connect ('localhost', 'root', ''); 
mysql_select_db ('etablissements', $base) ; 
$req =mysql_query("SELECT nom from ecoles");
while ($row=mysql_fetch_array($req)) {   
    $output[]=$row;   
}
//on encode en JSON
print(json_encode($output));
mysql_free_result ($req); 
?>


II. Coté Client
Au niveau du Client android, il s'agit de démander au serveur de nous renvoyer la liste des écoles grace aux commandes HttpClient, Ensuite, il nous appartient de décoder(récuperer les champs) ces données(puisqu'elles sont renvoyées sous forme d'objet JSON) et les afficher sous forme de liste dans notre cas.
Cela se fera en utilisant une seule classe principale qui va hériter de ListActivity pour faire simple.Voici en gros le contenu de la dite classe:
  • Envoi des commandes HttpClient en indiquant le chemin du fichier PHP à interroger (attention ici nous travaillons bien en local mais l'adresse locale pour l'emulateur android c'est 10.0.2.2 et non localhost ou 127.0.0.1 comme d'habitude).
  • Conversion du flux réçu en chaine de caractères
  • Récuperation des données codées sous forme d'objet JSON
  • Affichage suivant une liste
Je vous laisse le code complet ci-dessous de la partie client, n'hesitez pas à commenter si vous avez des erreurs/questions.

package com.mobilerie.com;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
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.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ListActivity;
import android.net.ParseException;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.Toast;

public class ConnexionSQLActivity extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        String result = null;
     InputStream is = null;
     JSONObject json_data=null;
     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
     ArrayList<String> donnees = new ArrayList<String>();
   
     try{

     //commandes httpClient
     HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("
http://10.0.2.2/connexion_mysql/connexion_mysql.php");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
     }
     catch(Exception e){
      Log.i("taghttppost",""+e.toString());
            Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
       }
   
      
     //conversion de la réponse en chaine de caractère
        try
        {
         BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
        
         StringBuilder sb  = new StringBuilder();
        
         String line = null;
        
         while ((line = reader.readLine()) != null)
         {
         sb.append(line + "\n");
         }
        
         is.close();
        
         result = sb.toString();
        }
        catch(Exception e)
        {
         Log.i("tagconvertstr",""+e.toString());
        }
        //recuperation des donnees json
        try{
          JSONArray jArray = new JSONArray(result);
           
             for(int i=0;i<jArray.length();i++)
             {
           
                   json_data = jArray.getJSONObject(i);
                   donnees.add(json_data.getString("nom"));
                   //r.add(json_data.getString("categorie"));

                  
               }
                setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, donnees));

            }
            catch(JSONException e){
             Log.i("tagjsonexp",""+e.toString());
            } catch (ParseException e) {
             Log.i("tagjsonpars",""+e.toString());
       }
           
    }
}





232 commentaires:

  1. bonjour,svp explique moi comment devrait etre la partie serveur lorsqu'on utilise xml pas json

    RépondreSupprimer
  2. si tu comptes utiliser un format de données xml, il faut alors passer par le protocole SOAP.tu dois créer un web service du coté de ton serveur et y acceder par soap.Associe eclipse et tomcat et trouve-toi un tuto,..et le tour est joué.

    RépondreSupprimer
    Réponses
    1. Merci bien pour votre reponse,je travail sur une application android d'un delegué medical qui doit acceder a une base de données situer sur un serveur via wifi,c ma premiere application dans ce dommaine,j'ai installer un serveur d'aplication jboss sous eclipse es ce que je doit travailler sur un projet ejb pour assurer la liaison entre mon aplication client android et mon serveur

      Supprimer
    2. t'es pas obligé! Je ne peux pas entrer dans les détails JEE.., mais Si je comprend, ton application a une partie client android que tu dois coder sous android(un projet comme les autres) et une partie serveur que tu peux traiter sous forme de webservice,Ensuite tu definit ton protocole d'appel. Il faut savoir qu'un EJB, ce n'est pas exactement un webservice.tu peux lire ces discussion pour t'eclaircir un peu avant de te lancer: http://www.developpez.net/forums/d180845/java/serveurs-conteneurs-java-ee/java-ee/webservices-vs-ejb/

      Supprimer
  3. svp ma base de données et sur mon pc et j'utilise l’émulateur !! tu peux m'expliquer comment je fais pour faire fonctionner ce programme ?

    RépondreSupprimer
    Réponses
    1. il faut tt simplement suivre étapes par etape le tuto, tout ira bien.

      Supprimer
  4. Bonjour,

    quel est la stricture du fichier XML ?
    car je comprends pas comment cette liste va être intégrer dans la page a affiché ?

    et Merci ;)

    RépondreSupprimer
  5. Bonjour,

    quel est la stricture du fichier XML ?
    car je comprends pas comment cette liste va être intégrer dans la page a affiché ?

    et Merci ;)

    RépondreSupprimer
    Réponses
    1. j'ai utilisé un listadapter.il sert d'intermediaire pour l'affichage des données sous forme de list aussi aulieu d'utiliser explicitement une listview comme dans mon tuto sur les logos. Tu peux retrouver l'instruction vers la fin du code java: (setListAdapter(new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1, donnees));).

      Supprimer
  6. Salut c'est Oussama , merci bien pour le tuto , j ai un petit problème avec un autre tuto en json qui connecte un fichier json héberger , le tuto marche et il affiche le resulta mais le probleme que je veux affecter le résulta dans un listview comme tu l a fais :)
    http://www.tutos-android.com/parsing-json-jackson-android
    merci bien de m aider :))

    RépondreSupprimer
    Réponses
    1. Bonjour Oussama,
      Il faut utiliser le listadapter comme ce que j'ai fais dans mon tuto. Tu peux aussi voir l'utilisation des listviews dans mon tuto sur les logos: http://mobilerie.blogspot.com/2012/02/tutoriel-android-listes-des-logos.html

      Supprimer
    2. mercie pour la reponse , mais j ai aussi un problème avec ton tuto

      j ai installer le serveur easyphp sur mon ordinateur
      j ai effectuer une base de donné : etablissements
      nom de table : ecoles avec les deux champs

      j ai cree un fichier.php sous www de easyphp
      j ai changer le lien vers le fichier : http://10.0.2.2/fichier.php

      j ai copier votre code et bien sur j ai changer le nom de Package

      j ai pas d erreur au niveau syntaxe , l émulateur s ouvre mais au démarrage de l application il me demande de forcer la fermeture !!!

      j utilise android 2.2
      j espere nien que vous pouver m aider

      voila les 5 premier ligne du log
      03-09 13:39:57.002: I/taghttppost(281): java.net.SocketException: Permission denied
      03-09 13:39:57.062: I/tagconvertstr(281): java.lang.NullPointerException
      03-09 13:39:57.082: D/AndroidRuntime(281): Shutting down VM
      03-09 13:39:57.082: W/dalvikvm(281): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
      03-09 13:39:57.112: E/AndroidRuntime(281): FATAL EXCEPTION: main

      Supprimer
    3. est-ce que tu as définit la permission INTERNET_ACCESS dans ton manifest?

      Supprimer
    4. c est ça , j ai oublier de définir la permission
      merci bien , ça marcher :))))) très gentil

      Supprimer
    5. content que ça marche :)
      Tu peux aussi choisir un pseudo pour les postes, c'est mieux pour distinguer les auteurs des questions.

      Supprimer
    6. slt , j ai un petit probleme , pour adapter ce tuto au tuto de la personalisation de listview.
      j ai toujours les items vide !!
      si tu peut m aider avec un bout de code ou un truc .
      j ai fait tous ce boulot dans une seule activité on activant setcontentview(..)
      merci d avance :))

      Supprimer
  7. slt j'ai pas reussir d'éxuter ce tutoriel ,
    je fais un base de donnée, créer ce code php ,ce classe java ,le permission internet mais il affiche ce message d'erreur"sorry the application has stopped unexpectedly"
    svp m'aidez.merciii d'avance :)))

    RépondreSupprimer
    Réponses
    1. il faut poster le contenu de ton Log

      Supprimer
    2. si tu utilise easy php tu doit changer l url en :
      http://10.0.2.2/connexion_mysql.php
      et tu doit placer tn fichier connexion_mysql.php sous www ;


      en plus que ca tu doit gerer tn fichier .php avec un editeur com notepad++ ou avec un environement comme dreamweaver pour aver un fichier .php et non .php.txt
      j espere que ca va t aider :)

      Supprimer
  8. Merci pour ce tutoriel,j'avais au début le même problème que sabrine car j'oublie de mettre setContentView(R.layout.main); en commentaire.
    Merci encore une fois.

    RépondreSupprimer
  9. merci pour ce tuto
    il marche très bien dans mon cas
    je veux savoir comment connaitre lorsque on clique sur un element
    et passer a une autre activité

    RépondreSupprimer
    Réponses
    1. //Regard du coté de
      setOnItemClick(){
      //ici tu met ce que tu veux, notamment le passage vers une deuxième activité
      //du genre:
      Intent i= new Intent();
      This.startActivity(i);
      //etc...
      }

      Supprimer
    2. merci
      mais le problème ici qu on a pas une listeView declaré
      on a juste ArrayList donnees = new ArrayList();
      puis on a setListAdapter(new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1, donnees));
      donc
      avec quoi je vais mettre setOnitemClick
      je veux dire
      si j avais une liste par exemple l
      je vais mettre l.setOnitemClick
      par contre ici qu'est ce que je vais mettre ??

      Supprimer
    3. Il suffit de créer explicitement une listView l si tu veux.Puis tu lui appliques le setOnItemClick..Regards mon tuto sur la liste des logos ici: http://mobilerie.blogspot.com/2012/02/tutoriel-android-listes-des-logos.html
      Sinon, si tu veux juste ajouter des listener aux items de ce meme tuto, tu peux alors juste ajouter la methode suivante par exemple:
      protected void onListItemClick(ListView l, View v, int position, long id) {
      Toast.makeText(getApplicationContext(), ""+id, Toast.LENGTH_LONG).show();


      super.onListItemClick(l, v, position, id);
      }
      Au niveau du toast, tu verras affiché l'id de l'item...

      Supprimer
    4. merci mon ami mais j arrive pas a vous comprendre voici mon code je n ai fait que changer le votre qu'est ce que il faut changer exactement et merci une autre fois et désolé pour le dérangement
      import java.io.BufferedReader;
      import java.io.InputStream;
      import java.io.InputStreamReader;
      import java.util.ArrayList;
      import org.apache.http.HttpEntity;
      import org.apache.http.HttpResponse;
      import org.apache.http.NameValuePair;
      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.json.JSONArray;
      import org.json.JSONException;
      import org.json.JSONObject;
      import android.app.ListActivity;
      import android.net.ParseException;
      import android.os.Bundle;
      import android.util.Log;
      import android.widget.ArrayAdapter;
      import android.widget.Toast;
      public class ConnexionSQLActivity extends ListActivity {
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      //setContentView(R.layout.main);
      String result = null;
      InputStream is = null;
      JSONObject json_data=null;
      ArrayList nameValuePairs = new ArrayList();
      ArrayList donnees = new ArrayList();

      try{
      //commandes httpClient
      HttpClient httpclient = new DefaultHttpClient();
      HttpPost httppost = new HttpPost("http://10.0.2.2/magasin.php");
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
      HttpResponse response = httpclient.execute(httppost);
      HttpEntity entity = response.getEntity();
      is = entity.getContent();
      }
      catch(Exception e){
      Log.i("taghttppost",""+e.toString());
      Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
      }


      //conversion de la réponse en chaine de caractère
      try
      {
      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));

      StringBuilder sb = new StringBuilder();

      String line = null;

      while ((line = reader.readLine()) != null)
      {
      sb.append(line + "\n");
      }

      is.close();

      result = sb.toString();
      }
      catch(Exception e)
      {
      Log.i("tagconvertstr",""+e.toString());
      }
      //recuperation des donnees json
      try{
      JSONArray jArray = new JSONArray(result);

      for(int i=0;i(this, android.R.layout.simple_expandable_list_item_1, donnees));
      }
      catch(JSONException e){
      Log.i("tagjsonexp",""+e.toString());
      } catch (ParseException e) {
      Log.i("tagjsonpars",""+e.toString());
      }

      }
      }

      Supprimer
  10. salut je sé pas pkoi ca marche pas malgrés que je suivis tous les instructions en fait j'adapte un pé la code a mon besoin coté serveur je veux recuperer la liste des amis de table amis donc quand je tous fais je le test sur localhost jobtient la reponse json mé quand je passe partie android r1 ne s affiche est ce que tu pé maider svp

    RépondreSupprimer
    Réponses
    1. Il me le faut plus d'infos pour t'aider.Qu'est-ce que tu obtiens comme erreur? Essaye de debogguer.Sinon Postes au moins le contenu de ton log

      Supprimer
    2. Bonsoir s'il vous plait j'ai le même problème que vous, pourriez vous m'aider ?

      Supprimer
  11. bon mtn jessai de reproduire votre exemple mé en vain jai un forcage d'arret sé pas pkoi
    pourtant je fé lajout de lacces internet

    04-03 07:31:39.246: E/Zygote(32): setreuid() failed. errno: 2
    04-03 07:31:50.176: E/Zygote(32): setreuid() failed. errno: 17
    04-03 07:31:51.775: E/BatteryService(58): usbOnlinePath not found
    04-03 07:31:51.775: E/BatteryService(58): batteryVoltagePath not found
    04-03 07:31:51.775: E/BatteryService(58): batteryTemperaturePath not found
    04-03 07:31:51.805: E/SurfaceFlinger(58): Couldn't open /sys/power/wait_for_fb_sleep or /sys/power/wait_for_fb_wake
    04-03 07:32:02.066: E/EventHub(58): could not get driver version for /dev/input/mouse0, Not a typewriter
    04-03 07:32:02.066: E/EventHub(58): could not get driver version for /dev/input/mice, Not a typewriter
    04-03 07:32:02.825: E/System(58): Failure starting core service
    04-03 07:32:02.825: E/System(58): java.lang.SecurityException
    04-03 07:32:02.825: E/System(58): at android.os.BinderProxy.transact(Native Method)
    04-03 07:32:02.825: E/System(58): at android.os.ServiceManagerProxy.addService(ServiceManagerNative.java:146)
    04-03 07:32:02.825: E/System(58): at android.os.ServiceManager.addService(ServiceManager.java:72)
    04-03 07:32:02.825: E/System(58): at com.android.server.ServerThread.run(SystemServer.java:184)

    RépondreSupprimer
  12. Tu utilises un telephone physique en deboggage?
    C'est tout ce que tu as comme erreur?
    Tu utilises quelle version d'android?
    Est-ce que tu es sur que tes requetes SQL fonctionnent en les testant sur le serveur?

    RépondreSupprimer
  13. si on travaille avec phone gap quelles est la meilleure solution pour creer un web service de consultation d'une base de données?

    RépondreSupprimer
    Réponses
    1. Le tutoriel n'a rien à voir avec phoneGap..J'y reviendrais peut etre dans les jours à venir.
      Mais je dirais de manière générale de régarder coté SOAP pour tout ce qui est WS utilisant particulièrement l'XML..Sinon tu as d'autres protocoles comme REST ou XML-RPC.

      Supprimer
  14. Bonjour,svp j suis vraiment besoin de vos aides, je suis entrin de réaliser une application mobile avec phonegap(Ajax ,javascript et html5): donc je dois au début faire un simple ajout d'un champ string a une base de donnée en respectant:
    coté client:phonegap sous eclipse
    coté serveur: service web java,ou autre solution pour connecter a une bd et ajouter le champ. et erci.

    RépondreSupprimer
  15. ça fait 2 ou 3h que j'essaye, impossible de faire apparaitre la moindre données sur l'émulateur Android, seule le liens du fichier mysql_connect s'affiche...

    Pourtant en tapant cette adresse dans mon navigateur les données s'affiche donc pas de soucis sur le fichier php.

    Contenu du logcat :

    04-06 17:30:29.195: W/KeyCharacterMap(685): No keyboard for id 0

    04-06 17:30:29.195: W/KeyCharacterMap(685): Using default keymap: /system/usr/keychars/qwerty.kcm.bin

    04-06 17:30:36.664: D/dalvikvm(685): GC_EXPLICIT freed 153K, 50% free 2760K/5511K, external 1625K/2137K, paused 475ms

    04-06 17:30:40.384: W/KeyCharacterMap(685): No keyboard for id 0

    04-06 17:30:40.384: W/KeyCharacterMap(685): Using default keymap: /system/usr/keychars/qwerty.kcm.bin

    04-06 17:30:56.045: E/log_tag(685): Error parsing data org.json.JSONException: Value <?xml of type java.lang.String cannot be converted to JSONArray


    Je désespère... Merci d'avance

    RépondreSupprimer
    Réponses
    1. Il semble,à première vue, d'après le dernier paragraphe de ton LogCat, que l'erreur vient de la ligne suivante: JSONArray jArray = new JSONArray(result);
      verifie bien que le "result" est recuperé et convertit en String.
      à ta place, j'insererai des tags un peu partout dans mon code pour diagnostiquer la cause..

      Supprimer
    2. Merci de ton aide rapide, en utilisant le deboggage, je trouve que le contenu de result est le suivant :

      http://dl.dropbox.com/u/59833656/contenu%20de%20result.txt
      (je ne poste pas ici car le HTML n'est pas accepté)


      Suite à ça j'arrive dans le catch. C'est donc le contenu de result qui n'est pas bon apparement. Je cherche de mon coté la raison, si tu as une idée je reste à l'écoute :)

      Supprimer
    3. ça y est.. J'avais un soucis sur l'URL du php ^^

      Supprimer
    4. Eh bien content que c'est résolu :)

      Supprimer
    5. bonsoir, merci pour votre tuto.
      je fais cette application mais j'ai recu la meme erreur que "Clément" dans LogCat "10-13 17:43:52.353: I/tagjsonexp(334): org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONArray
      ".
      Mais je suis debutant dans android alor je ne sais pas comment tu a corrige ton problem. svp vous pouvez m'aider??

      Supprimer
  16. Dernière question, une fois que coté client a récupéré les données sous la forme suivante :

    {"ID_Ville":"33","Nom_ville":"Lyon"}

    Existe t-il en Java un moyen simple d'extraire les valeurs "33" et "Lyon", (un truc du style maDonnéeJson.getValue["ID_Ville"]) ou faut-il faire du "traitement de chaine" ?

    RépondreSupprimer
    Réponses
    1. Oui ça existe et c'est à peu près ce que tu as écrit:
      maDonnéeJson.getString("Nom_Ville"); oubien (String)maDonnéeJson.get("Nom_Ville"); devraient tous te donner "Lyon". Je suppose biensur que maDonnéeJson est un objet JSON et que "Nom_Ville" est le nom de la colonne de ta table.

      Supprimer
  17. slt j'ai pas reussir d'éxuter ce tutoriel ,
    je fais un base de donnée, créer ce code php ,ce classe java ,le permission internet mais il affiche ce message d'erreur"sorry the application has stopped unexpectedly"

    04-08 13:40:17.565: E/AndroidRuntime(491): FATAL EXCEPTION: main
    04-08 13:40:17.565: E/AndroidRuntime(491): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.users/com.users.Connect_data_baseActivity}: java.lang.ClassNotFoundException: com.users.Connect_data_baseActivity in loader dalvik.system.PathClassLoader[/data/app/com.users-2.apk]
    04-08 13:40:17.565: E/AndroidRuntime(491): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
    04-08 13:40:17.565: E/AndroidRuntime(491): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    04-08 13:40:17.565: E/AndroidRuntime(491): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    04-08 13:40:17.565: E/AndroidRuntime(491): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    04-08 13:40:17.565: E/AndroidRuntime(491): at android.os.Handler.dispatchMessage(Handler.java:99)
    04-08 13:40:17.565: E/AndroidRuntime(491): at android.os.Looper.loop(Looper.java:123)
    04-08 13:40:17.565: E/AndroidRuntime(491): at android.app.ActivityThread.main(ActivityThread.java:4627)
    04-08 13:40:17.565: E/AndroidRuntime(491): at java.lang.reflect.Method.invokeNative(Native Method)
    04-08 13:40:17.565: E/AndroidRuntime(491): at java.lang.reflect.Method.invoke(Method.java:521)
    04-08 13:40:17.565: E/AndroidRuntime(491): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    04-08 13:40:17.565: E/AndroidRuntime(491): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    04-08 13:40:17.565: E/AndroidRuntime(491): at dalvik.system.NativeStart.main(Native Method)
    04-08 13:40:17.565: E/AndroidRuntime(491): Caused by: java.lang.ClassNotFoundException: com.users.Connect_data_baseActivity in loader dalvik.system.PathClassLoader[/data/app/com.users-2.apk]
    04-08 13:40:17.565: E/AndroidRuntime(491): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
    04-08 13:40:17.565: E/AndroidRuntime(491): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
    04-08 13:40:17.565: E/AndroidRuntime(491): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
    04-08 13:40:17.565: E/AndroidRuntime(491): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
    04-08 13:40:17.565: E/AndroidRuntime(491): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)

    RépondreSupprimer
    Réponses
    1. Il faut voir dans ton manifest le chemin spécifié pour ton activité

      Supprimer
    2. salut s'il vous plait tu as trouvé la solution tu peut m'aider mon erreur est comme votre erreur

      Supprimer
    3. Bsr SVP qu'est ce que vous voulais dire par : Il faut voir dans ton manifest le chemin spécifié pour ton activité ?? et merci

      Supprimer
    4. j'ai le mème erreur comment tu as pu la résolu sachant bien que mon manifest est bien structuré

      Supprimer
  18. ;) sa marche mé r1 ne saffiche tu pé m'aider un autre fois voila mon log

    04-09 02:36:14.538: E/AndroidRuntime(293): FATAL EXCEPTION: main
    04-09 02:36:14.538: E/AndroidRuntime(293): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.database_demo/com.database_demo.Database_demo}: java.lang.ClassNotFoundException: com.database_demo.Database_demo in loader dalvik.system.PathClassLoader[/data/app/com.database_demo-1.apk]
    04-09 02:36:14.538: E/AndroidRuntime(293): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
    04-09 02:36:14.538: E/AndroidRuntime(293): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    04-09 02:36:14.538: E/AndroidRuntime(293): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    04-09 02:36:14.538: E/AndroidRuntime(293): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    04-09 02:36:14.538: E/AndroidRuntime(293): at android.os.Handler.dispatchMessage(Handler.java:99)
    04-09 02:36:14.538: E/AndroidRuntime(293): at android.os.Looper.loop(Looper.java:123)
    04-09 02:36:14.538: E/AndroidRuntime(293): at android.app.ActivityThread.main(ActivityThread.java:4627)
    04-09 02:36:14.538: E/AndroidRuntime(293): at java.lang.reflect.Method.invokeNative(Native Method)
    04-09 02:36:14.538: E/AndroidRuntime(293): at java.lang.reflect.Method.invoke(Method.java:521)
    04-09 02:36:14.538: E/AndroidRuntime(293): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    04-09 02:36:14.538: E/AndroidRuntime(293): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    04-09 02:36:14.538: E/AndroidRuntime(293): at dalvik.system.NativeStart.main(Native Method)
    04-09 02:36:14.538: E/AndroidRuntime(293): Caused by: java.lang.ClassNotFoundException: com.database_demo.Database_demo in loader dalvik.system.PathClassLoader[/data/app/com.database_demo-1.apk]
    04-09 02:36:14.538: E/AndroidRuntime(293): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
    04-09 02:36:14.538: E/AndroidRuntime(293): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
    04-09 02:36:14.538: E/AndroidRuntime(293): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
    04-09 02:36:14.538: E/AndroidRuntime(293): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
    04-09 02:36:14.538: E/AndroidRuntime(293): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
    04-09 02:36:14.538: E/AndroidRuntime(293): ... 11 more

    RépondreSupprimer
  19. Nouvelle question ^^ niveau sécurité n'importe qui qui tape le liens du script PHP dans son navigateur va obtenir les données sous forme JSON, ici elles ne sont pas sensibles (des catégories), mais dans le cas de données sensibles comment faire ?

    RépondreSupprimer
  20. Par données sensibles j'entends des données qui ne concerne qu'une seule personne tel qu'une adresse e-mail par exemple

    RépondreSupprimer
    Réponses
    1. L'appel du fichier php peut etre conditionné par des données postées par l'application client.c-a-d écrire des requêtes dépendant des paramètres du POST envoyé par le client android. comme ça une fois l'url tapée par "n'importe qui", les requêtes ne s'executeront pas à défaut de ces paramètres. Mais cela dit, rien n'est encore garantit à 100%, si tu as d'autres procédures efficaces, je suis preneur.

      Supprimer
  21. le format JSON me rappelle un tas de chose hhhhh!au moins j'ai appris klk chose !u knw what i mean hhh!trop interessant!bn courage

    RépondreSupprimer
    Réponses
    1. merci bien! C'est en effet la plus value qui est partagée ici!

      Supprimer
  22. Salut ! j'arrive pas a exécuter ce tuto ! j'ai fais +ieurs test et tjr le meme problème ! j'ai désactivé la dernière partie et le toast passé en log s'affiche ! est ce qu'on peut pas exécuter ce code sur l’émulateur ?

    RépondreSupprimer
    Réponses
    1. Quel est l'erreur que tu obtiens? Le code s'execute bien sur l'émulateur..Et je ne vois pas ce que tu appelle "dernière partie". Essaye de suivre tout le tutoriel pas par pas, si tu ne comprends pas quelquechose, poses une question précise en indiquant l'erreur que tu obtiens.

      Supprimer
  23. salut,c saddam , j''ai pas reussie d'executer ce tuto il m'affiche application has stopped quelqu'un m'aider

    RépondreSupprimer
  24. c'est les erreurs qui apparait dans le logcat
    05-07 11:32:27.426: E/AndroidRuntime(579): FATAL EXCEPTION: main
    05-07 11:32:27.426: E/AndroidRuntime(579): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.com/com.test.com.Recuperer}: java.lang.NullPointerException
    05-07 11:32:27.426: E/AndroidRuntime(579): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
    05-07 11:32:27.426: E/AndroidRuntime(579): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
    05-07 11:32:27.426: E/AndroidRuntime(579): at android.app.ActivityThread.access$600(ActivityThread.java:123)
    05-07 11:32:27.426: E/AndroidRuntime(579): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
    05-07 11:32:27.426: E/AndroidRuntime(579): at android.os.Handler.dispatchMessage(Handler.java:99)
    05-07 11:32:27.426: E/AndroidRuntime(579): at android.os.Looper.loop(Looper.java:137)
    05-07 11:32:27.426: E/AndroidRuntime(579): at android.app.ActivityThread.main(ActivityThread.java:4424)
    05-07 11:32:27.426: E/AndroidRuntime(579): at java.lang.reflect.Method.invokeNative(Native Method)
    05-07 11:32:27.426: E/AndroidRuntime(579): at java.lang.reflect.Method.invoke(Method.java:511)
    05-07 11:32:27.426: E/AndroidRuntime(579): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    05-07 11:32:27.426: E/AndroidRuntime(579): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    05-07 11:32:27.426: E/AndroidRuntime(579): at dalvik.system.NativeStart.main(Native Method)
    05-07 11:32:27.426: E/AndroidRuntime(579): Caused by: java.lang.NullPointerException
    05-07 11:32:27.426: E/AndroidRuntime(579): at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
    05-07 11:32:27.426: E/AndroidRuntime(579): at org.json.JSONTokener.nextValue(JSONTokener.java:94)
    05-07 11:32:27.426: E/AndroidRuntime(579): at org.json.JSONArray.(JSONArray.java:87)
    05-07 11:32:27.426: E/AndroidRuntime(579): at org.json.JSONArray.(JSONArray.java:103)
    05-07 11:32:27.426: E/AndroidRuntime(579): at com.test.com.Recuperer.onCreate(Recuperer.java:78)
    05-07 11:32:27.426: E/AndroidRuntime(579): at android.app.Activity.performCreate(Activity.java:4465)
    05-07 11:32:27.426: E/AndroidRuntime(579): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
    05-07 11:32:27.426: E/AndroidRuntime(579): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
    05-07 11:32:27.426: E/AndroidRuntime(579): ... 11 more

    RépondreSupprimer
    Réponses
    1. Essaies de debogguer ton application avec eclipse.Place des points tag pour diagnostiquer la cause...Regard deja ce qui ne va pas sur cette ligne:
      com.test.com.Recuperer.onCreate(Recuperer.java:78)

      Supprimer
    2. tu peut expliquer moi un peut car je suis debutant et merci

      Supprimer
  25. j'ai suivé le demarche de tuto ,mais a chaque fois j'obtiens ce message d'erreur :

    Notice: Undefined variable: sql in C:\Program Files (x86)\EasyPHP-5.3.9\www\android\connection.php on line 11

    Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\Program Files (x86)\EasyPHP-5.3.9\www\android\connection.php on line 11
    []
    svp,j'ai besoin d'aide

    RépondreSupprimer
    Réponses
    1. C'est une erreur dans ton code php.Postes ton code php.

      Supprimer
  26. voici mon code php:
    // on se connecte à notre base pour recuperer les data
    $base = mysql_connect ('localhost', 'root', '');

    mysql_select_db ('names', $base) ;

    $req =mysql_query("SELECT Nom from name");

    $output = array();

    while($row=mysql_fetch_array($sql))

    $output[]=$row;


    //on encode en JSON

    print(json_encode($output));

    mysql_free_result ($req);
    ?>

    RépondreSupprimer
    Réponses
    1. essaies ça, en remplaçant $sql par $req, comme suit:
      $base = mysql_connect ('localhost', 'root', '');

      mysql_select_db ('names', $base) ;

      $req =mysql_query("SELECT Nom from name");


      while($row=mysql_fetch_array($req))

      $output[]=$row;


      //on encode en JSON

      print(json_encode($output));

      mysql_free_result ($req);
      ?>
      Ensuite, tu testes ton fichier php en l'executant seul sur le serveur voir ce qu'il te donne.Si le résultat s'affiche sous forme JSON, normalement tout se passe bien.

      Supprimer
  27. j'ai essayer ,voici la nouvelle erreur :

    Fatal error: Call to undefined function: json_encode() in c:\program files (x86)\easyphp1-8\www\android\connection.php on line 17

    svp,aidez moi encore lestrucsmobiles ,j'ai complement bloqué

    RépondreSupprimer
  28. Ajoutes ce bout de code dans ta boucle while, comme ça:
    while(...){
    $output=$row;

    //ce qui suit est le code
    if (!function_exists('json_encode')){
    function json_encode($a=false){
    if (is_null($a)) return 'null';
    if ($a === false) return 'false';
    if ($a === true) return 'true';
    if (is_scalar($a)){
    if (is_float($a)){
    // Always use "." for floats.
    return floatval(str_replace(",", ".", strval($a)));
    }

    if (is_string($a)){
    static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
    return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
    }else return $a;

    }
    $isList = true;
    for ($i = 0, reset($a); $i < count($a); $i++, next($a)){
    if (key($a) !== $i){
    $isList = false;
    break;
    }
    }
    $result = array();
    if ($isList){
    foreach ($a as $v) $result[] = json_encode($v);
    return '[' . join(',', $result) . ']';
    }else{
    foreach ($a as $k => $v) $result[] = json_encode($k).':'.json_encode($v);
    return '{' . join(',', $result) . '}';
    }
    }
    }//fin du code


    }//fin de la boucle while

    RépondreSupprimer
    Réponses
    1. désolé, petite correction au début: $output[]=$row;( les crochets)

      Supprimer
  29. Désolé ,parceque j'ai posé plusieur de question et merci pour votre aide ,je suis débutante

    j'ai une autre erreur :

    Parse error: parse error in c:\program files (x86)\easyphp1-8\www\android\connection.php on line 53

    vous pouvez m'aidez encore

    RépondreSupprimer
    Réponses
    1. Je ne peux pas voir l'erreur comme ça.Essaie de voir la ligne 53 du fichier php, qu'est-ce qu'elle contient?

      Supprimer
    2. ok et merci bien pour l'aide

      Supprimer
  30. bonjour, j'ai une base de donnée SQlite ,j'ai cherché comment comparer entre deux prix différents d'un produit dans deux ou plusieurs magasins

    RépondreSupprimer
  31. Bonjour, je suis totalement débutante dans ce domaine (je ne connais ni SQL ni PHP...), cependant je dois réaliser une application android de télésurveillance donc je dois communiquer avec une base de données n'est-ce-pas ??? svp je veux une démarche à suivre dés le début comment créer cette base, communiquer et programmer avec android et merci d'avance je vous serrais très reconnaissante.

    RépondreSupprimer
    Réponses
    1. "je ne connais ni SQL ni PHP..."! Qu'est-ce que tu connais donc? Il faudra bien une technologie pour réaliser ça, n'est-ce pas?
      Comprends d'abord bien les besoins de ton cahier de charges, ensuite modélise ton application et commence à la développer partie par partie ;-).

      Supprimer
    2. merci pour votre réponse, oui je ne les connais pas car j'ai étudié le génie électrique et entrain de découvrir ce domaine, moi j'ai voulais juste la démarche à suivre, en faisant mes recherches, je me suis bloqué car c un domaine très vaste et j'ai pas suffisamment du temps. Merci

      Supprimer
    3. "Comprends d'abord bien les besoins de ton cahier de charges, ensuite modélise ton application et commence à la développer partie par partie"..

      Supprimer
  32. concernant l'exemple Connexion-Android-MySQL, JSON PHP,j'ai enfin finir toute les étapes,je n'ai aucune erreur,mais le probleme qu'il n'affiche rien ,et le logcat m'affiche :timeout (time failed)

    RépondreSupprimer
    Réponses
    1. C'est peut être un problème lié à ton serveur..

      Supprimer
    2. problème comme quoi par exemple ???

      Supprimer
    3. j'ai ce message dans le logcat request time failed: java.net.SocketException: Address family not supported by protocol

      Supprimer
    4. Plusieurs causes possibles, sans être sûr, je pense à:
      -URL incorrect
      -Numéro de port incorrect dans l'URL(http://IP:port/)
      -Problème de blocage firewall (surtout si tu deboggues avec un téléphone physique)..

      Supprimer
  33. salut j'ai essayer de debouger mon application et sa n'a rien faire s'il vous plait aidez moi c'est urgent pour mon pfe

    RépondreSupprimer
  34. comment faire pour récuperer les mots contenant le caractére "é"

    RépondreSupprimer
  35. Salut,

    Merci pour ce tuto, il marche très bien, enfait je suis entrain de développer une application android qui va envoyer un fichier Json à un service web, mais je sais pas comment je vais envoyer ce fichier, si quelqu'un peut m'aider.


    Merci bcpp

    RépondreSupprimer
    Réponses
    1. tu as reussie a executer ce tuto , tu peut m'aider a l'executer j'ai une erreur

      Supprimer
  36. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer
  37. salut je veux savoir : est ce qu'on peut dire que le script php joue le role d'un service web Rest ou non , sinon comment peut on nommé ce technique merci

    RépondreSupprimer
  38. Bonjour,
    Merci pour votre TUTO qui est très intéressant et pratique !
    Cependant je n'arrive pas à tout exécuter normalement.

    Voici les logs :
    05-24 09:12:41.457: E/AndroidRuntime(537): FATAL EXCEPTION: main
    05-24 09:12:41.457: E/AndroidRuntime(537): java.lang.RuntimeException: Unable to start activity ComponentInfo{Voyageur.Suivi.Bagage/Voyageur.Suivi.Bagage.VoyageurSuiviBagageActivity}: java.lang.NullPointerException
    05-24 09:12:41.457: E/AndroidRuntime(537): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
    05-24 09:12:41.457: E/AndroidRuntime(537): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
    05-24 09:12:41.457: E/AndroidRuntime(537): at android.app.ActivityThread.access$600(ActivityThread.java:123)
    05-24 09:12:41.457: E/AndroidRuntime(537): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
    05-24 09:12:41.457: E/AndroidRuntime(537): at android.os.Handler.dispatchMessage(Handler.java:99)
    05-24 09:12:41.457: E/AndroidRuntime(537): at android.os.Looper.loop(Looper.java:137)
    05-24 09:12:41.457: E/AndroidRuntime(537): at android.app.ActivityThread.main(ActivityThread.java:4424)
    05-24 09:12:41.457: E/AndroidRuntime(537): at java.lang.reflect.Method.invokeNative(Native Method)
    05-24 09:12:41.457: E/AndroidRuntime(537): at java.lang.reflect.Method.invoke(Method.java:511)
    05-24 09:12:41.457: E/AndroidRuntime(537): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    05-24 09:12:41.457: E/AndroidRuntime(537): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    05-24 09:12:41.457: E/AndroidRuntime(537): at dalvik.system.NativeStart.main(Native Method)
    05-24 09:12:41.457: E/AndroidRuntime(537): Caused by: java.lang.NullPointerException
    05-24 09:12:41.457: E/AndroidRuntime(537): at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
    05-24 09:12:41.457: E/AndroidRuntime(537): at org.json.JSONTokener.nextValue(JSONTokener.java:94)
    05-24 09:12:41.457: E/AndroidRuntime(537): at org.json.JSONArray.(JSONArray.java:87)
    05-24 09:12:41.457: E/AndroidRuntime(537): at org.json.JSONArray.(JSONArray.java:103)
    05-24 09:12:41.457: E/AndroidRuntime(537): at Voyageur.Suivi.Bagage.VoyageurSuiviBagageActivity.onCreate(VoyageurSuiviBagageActivity.java:75)
    05-24 09:12:41.457: E/AndroidRuntime(537): at android.app.Activity.performCreate(Activity.java:4465)
    05-24 09:12:41.457: E/AndroidRuntime(537): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
    05-24 09:12:41.457: E/AndroidRuntime(537): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
    05-24 09:12:41.457: E/AndroidRuntime(537): ... 11 more



    En faisant du pas à pas, je me suis rendu compte que le code sortait à ce niveau :
    try
    {
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));

    StringBuilder sb = new StringBuilder();

    String line = null;

    Ainsi la String result n'est pas instanciée. Et ainsi la ligne
    JSONArray jArray = new JSONArray(result);
    me retourne une null pointeur exception.

    Merci d'avance.

    RépondreSupprimer
    Réponses
    1. Un peu plus haut quelqu'un a eu un problème similaire avec result.ça pourrait être à cause de ton url. Quand tu exécutes le PHP isolé, ça récupères les données?

      Supprimer
    2. J'ai vu ce problème similaire, du coup j'ai vérifié mon URL, et quand je rentre mon URL dans un navigateur, il m'affiche bien à l'écran le code JSON que je souhaite.

      Supprimer
  39. Bonjour,

    Super tuto, facile d'utilisation, marche bien avec l'émulateur. Cependant je n'arrive pas à le faire fonctionner avec mon téléphone (HTC EVO 3D). Je change pourtant l'HTTP, je met http://192.168.0.12/www/prout.php mais ça ne fonctionne pas 192.168.0.12 étant mon IP local

    Merci de m'éclairer

    Vivien

    RépondreSupprimer
    Réponses
    1. Bonjour Vivien,
      Pour que ça marche sur un téléphone physique, il faut que le téléphone soit connecté sur le même réseau que ton serveur.Si tu utilises un réseau wifi, assures-toi que le téléphone aussi est connecté.

      Supprimer
  40. j'ai l'ordinateur, et le téléphone qui sont connecté sur le même réseau wifi, pourtant ça ne marche pas.

    Autres solutions possible, j'ai mis le fichier.php sur un hebergeur et la base de données aussi, comment faire pour que ça fonctionne dans ce cas ?

    Et pour dans le cas que j'ai décrit sur le poste d'avant.

    Merci beaucoup

    RépondreSupprimer
    Réponses
    1. ça devrait marché si le téléphone et le PC sont sur le même réseau..
      En fait pour ton url, t'as pas besoin du www, à la rigueur tu dois spécifier le port : http://IP:80/ par exemple.
      Et assures-toi aussi qu'aucun firewall ne bloque l'accès au serveur. Tu utilises quel serveur d'ailleurs?

      Supprimer
    2. Pour la connecter à un site d'un copain sur laquel j'ai crée la BDD et j'ai mis le fichier sur l'hebergeur j'ai mis ça:

      HttpPost httppost = new HttpPost("http://www.remybenoist.fr/test.php");

      Supprimer
    3. Le serveur de BDD est sur internet sous le nom de domaine remybenoist.fr, sur laquelle est hebergé la BDD, donc je passe en HTTP ce que j'ai mis au dessus

      Supprimer
    4. Oui c'est correct normallement. C'est la même chose, si tu convertis le "www.remybenoist.fr" en IP

      Supprimer
    5. j'ai essayé également mais ça ne fonctionne pas.

      Avez tu réussi à le faire autrement qu'avec l'émulateur ?

      Merci

      Supprimer
    6. Oui biensur, je l'ai testé sans problème sur un téléphone physique.
      Sinon, quand on exécute tes fichiers directement, il y a dejà des erreurs. Essayes d'executer test.php et ville.php, tu verras ce que ça donne sur le serveur.

      Supprimer
  41. Quand je clique sur test.php j'obtient ça

    Fatal error: Call to undefined function: json_encode() in /homez.462/remybeno/www/test.php on line 11

    RépondreSupprimer
    Réponses
    1. Voilà, c'est dejà un 1er problème avant l'accès au serveur. Tu as eu le même problème avec l'emulateur? Quand tu mets "www.remybenoist.fr", sur le navigateur du téléphone, ça donne quoi?

      Supprimer
  42. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer
  43. Non je n'ai pas eu cette erreur.

    Sur le navigateur du téléphone j'ai exactement pareil que sur celui de l'ordinateur, je peux choisir entre les fichier index2.php, test.php et ville.php.

    Quand je clique sur test.php j'ai la même erreur.

    RépondreSupprimer
    Réponses
    1. Dans la console j'ai ses messages d'erreurs (mais l'application s'ouvre ça n'affiche jsute rien)

      [2012-05-25 11:32:17 - ConnexionSQL] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.mobilerie.com/.ConnexionSQLActivity }
      [2012-05-25 11:32:17 - ConnexionSQL] ActivityManager: Warning: Activity not started because the current activity is being kept for the user.

      Supprimer
    2. OK, puisque tu as pu visualiser les fichiers depuis le navigateurs du téléphone, ça veut dire qu'il n'y a aucun problème d'accès serveur.
      Maintenant concernant l'erreur Call to undefined function. Il faut que tu definisses la fonction json_encode dans ton fichier php.
      Dans ta boucle while:

      while(...){
      $output=$row;

      //ce qui suit est le code
      if (!function_exists('json_encode')){
      function json_encode($a=false){
      if (is_null($a)) return 'null';
      if ($a === false) return 'false';
      if ($a === true) return 'true';
      if (is_scalar($a)){
      if (is_float($a)){
      // Always use "." for floats.
      return floatval(str_replace(",", ".", strval($a)));
      }

      if (is_string($a)){
      static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
      return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
      }else return $a;

      }
      $isList = true;
      for ($i = 0, reset($a); $i < count($a); $i++, next($a)){
      if (key($a) !== $i){
      $isList = false;
      break;
      }
      }
      $result = array();
      if ($isList){
      foreach ($a as $v) $result[] = json_encode($v);
      return '[' . join(',', $result) . ']';
      }else{
      foreach ($a as $k => $v) $result[] = json_encode($k).':'.json_encode($v);
      return '{' . join(',', $result) . '}';
      }
      }
      }//fin du code

      Supprimer
    3. par rapport au fichier de départ je garde juste ce qui est connexion à la BDD et la requête et à partir du while je colle texto le code que tu viens de me mettre ?

      Supprimer
  44. Tu remplaces juste ta boucle while.
    une petite erreur de crochets: $output[]=$row;

    RépondreSupprimer
    Réponses
    1. cool, maintenant quand je clique sur test.php j'obtient ça

      [{0:"EHTP","nom":"EHTP",1:"travaux publicw","categorie":"travaux publicw"},{0:"ENSIAS","nom":"ENSIAS",1:"informatique","categorie":"informatique"},{0:"INPT","nom":"INPT",1:"telecoms","categorie":"telecoms"},{0:"INSEA","nom":"INSEA",1:"statistiques","categorie":"statistiques"}]

      Supprimer
    2. mais ça ne m'affiche toujours rien dans l'application

      Supprimer
    3. Tu obtiens quelle erreur dans le logcat?

      Supprimer
  45. Tiens, tu peux regarder ce que me donne le logcat à l'adresse suivante:

    http://www.restomaniak.com/media/capture.png

    RépondreSupprimer
    Réponses
    1. Dsl s'était une erreur j'avais pas activer le net sur mon téléphone.

      Regarde ce lien: http://www.restomaniak.com/media/capture2.png

      Donc rien dans le logcat mais aucun retour de la BDD dans l'application

      Supprimer
    2. Voilà ce que j'obtient sur le téléphone android:

      http://www.restomaniak.com/media/capture-non-affichage.png

      pourtant quand je clique sur test.php j'ai bien le code en jspn:

      [{0:"EHTP","nom":"EHTP"},{0:"ENSIAS","nom":"ENSIAS"},{0:"INPT","nom":"INPT"},{0:"INSEA","nom":"INSEA"}]

      Supprimer
    3. j'ai ce message dans le logcat

      [2012-05-25 14:55:40 - ConnexionSQL] ActivityManager: Warning: Activity not started, its current task has been brought to the front

      Supprimer
    4. Ce message est tout juste un avertissement comme quoi l'application etait deja lancée, et que le système ne va pas la relancée mais réplace la tache en cours d'exécution en foreground..
      Il faut donc, la rélancer manuellement: précédent, précédent,... sur le téléphone, puis rélancer.

      Supprimer
    5. ça ne fonctionne toujours pas, je comprend pas pourquoi ça marche en local sur l'émulateur et ça ne marche pas quand je met une adresse ou j'héberge le fichier et que j'essai de déployer l'application sur mon mobile. Es-ce que ça peut provenir de mon mobile ?

      Supprimer
    6. C'est quand même bizarre.Je ne pense pas que que ça provienne du mobile( ça aurait été un problème de version, mais dans ce cas tu aurais un autre avertissement..). Reéssayes toujours en local, en utilisant le téléphone avec la même adresse utilisée pour l'émulateur: http://10.0.2.2/fichier.php
      Mais, j'insiste: Même en local, ton téléphone et le PC doivent être connectés sur le même réseau.

      Supprimer
  46. Je met donc http://10.0.2.2.fichier.php et je compile sur mon téléphone ? si ils sont sur le même réseau ça devrait donc marcher ?

    RépondreSupprimer
    Réponses
    1. Vérifies bien que c'est http://10.0.2.2/fichier.php et non http://10.0.2.2.fichier.php !
      Et Oui, ça devrait marché. Testes et dis-moi ce que tu obtiens

      Supprimer
    2. Quand je met http://10.0.2.2/test.php ça fonctionne si je compile sur l'émulateur.

      Par contre quand je met http://10.0.2.2/test.php ça ne fonctionne pas quand je compile sur le téléphone. J'ai donc essayé toutes ces variantes pensant peut être que ça pouvait venir du chemin:

      - http://10.0.2.2/C:/wamp/www/test.php
      - http://10.0.2.2/www/test.php

      Pourtant je suis bien connecté au même réseau internet (même box). Sauf que mon portable est relié en wifi et mon pc en ethernet. L'adresse Local de mon poste étant 192.168.0.12 et l'adresse local de mon portable étant 192.168.0.22.

      Je récapitule donc ça tourne sur la VM mais pas sur mon portable. Sur mon portable l'application s'ouvre avec le titre qui est bien affiché, mais le contenu est noir rien ne s'affiche. Au bout d'un certain temps elle crache et demande de forcer la fermeture (c'est marqué que l'application ne répond pas).

      Merci

      Vivien

      Supprimer
    3. OK. Tu confirmes bien qu'en tapant "192.168.0.12" sur le navigateur du téléphone, tu accèdes au serveur?

      Supprimer
    4. 192.168.0.12 étant l'adresse Local de mon Ordinateur Fixe (pas un serveur ftp). Donc il est normal que je n'y arrive pas non ?

      Car quand je tape http://192.168.0.12 sur le navigateur de mon téléphone, le barre de chargement est rempli à 1/10ème et plus rien n'évolue.

      Voici le screen: http://www.restomaniak.com/media/192.168.0.12.png

      Supprimer
    5. Non, c'est là enfait le problème.Un peu plus haut, j'ai cru comprendre que tu visualisais les fichiers de ton serveur à partir du téléphone..
      Bon, pas besoin que ça soit un serveur ftp, tu devrais pouvoir y acceder par HTTP. Je pense maintenant que c'est un firewall qui te bloque l'accès. Si tu utilises wampServer, passe en mode putOnline et desactives le parefeu voir ce que ça donne.

      Supprimer
    6. En effet dans ce cas ça fonctionne voilà ce que j'obtiens:

      http://www.restomaniak.com/media/bonnenouvelle.png

      ça marche même quand je laisse wamp en Online, mais le parefeu est bien désactivé.

      Que dois-je faire pour que ça fonctionne maintenant avec l'hébergement www.remybenoist.fr et plus wamp, pour que je puisse l'utilisé dans une application qui finira sur le Market :)

      Je te remercie beaucoup, c'est rare de voir quelqu'un qui se donne autant de mal!

      Vivien

      Supprimer
    7. Et bien, pas plus que ce que tu viens de faire je pense. Tu places ton fichier php dans le serveur du restomaniak et tu indiques la bonne url du restomaniak :).....
      Bon, je t'en prie et je ne pense pas que je me donne du mal. Bonne suite dans tes projets.

      Supprimer
    8. Pourtant ça ne fonctionne pas, car quand je met: http://remybenoist.fr/test.php à la place ça ne fonctionne pas, je comprend vraiment pas...

      Supprimer
    9. Si tu pouvais m'aider encore un petit peu se serait cool.

      Merci beaucoup

      Supprimer
    10. ça fonctionne avec http://remybenoist.fr/test.php sur l'émulateur mais pas sur le mobile, j'ai même une fermeture soudaine maintenant

      Supprimer
  47. Je n'ai toujours pas réussi à le faire fonctionner...

    RépondreSupprimer
  48. bonjour, j'aurais voulu savoir si c'est possible d'afficher dans la listActivity plusieurs variables, par exemple pour vous, afficher avec le nom, la catégorie correspondante, dans la même 'case'... Merci

    RépondreSupprimer
    Réponses
    1. Images, données, description... dans le même item d'une listView?
      Voir mon tuto sur la liste des logos: http://mobilerie.blogspot.com/2012/02/tutoriel-android-listes-des-logos.html

      Supprimer
    2. Oui dans le même item, sachant que les deux valeurs viennent de la base de données toutes les deux. Je dois récupérer ces deux valeurs dans mon script PHP ( elles proviennent de la même table) et les afficher dans le même item.. C'est comme si vous affichiez INPT et télécoms ds le même, et EHTP , travaux public dans celui d'après ..

      Supprimer
    3. Et c'est pas une listView alors je coprends pas tout...

      Supprimer
  49. C'est bon ça fonctionne pour ma part ça devait venir de l'hébergement car j'ai essayé avec un autre nom de domaine et ça fonctionne.

    Merci beaucoup de ton tuto.

    RépondreSupprimer
  50. mon code ne marche pas alors que ma page sur les serveur est ok

    package com.test;
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    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.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    import android.app.ListActivity;
    import android.net.ParseException;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.ArrayAdapter;
    import android.widget.Toast;
    public class TestActivity extends ListActivity {

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String result = null;
    InputStream is = null;
    JSONObject json_data=null;
    ArrayList nameValuePairs = new ArrayList();
    ArrayList donnees = new ArrayList();

    try{

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://www.you4like.com/android/biz_mysql.php");
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    is = entity.getContent();
    }
    catch(Exception e){
    Log.i("taghttppost",""+e.toString());
    Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
    }


    try
    {
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));

    StringBuilder sb = new StringBuilder();

    String line = null;

    while ((line = reader.readLine()) != null)
    {
    sb.append(line + "\n");
    }

    is.close();

    result = sb.toString();
    }
    catch(Exception e)
    {
    Log.i("tagconvertstr",""+e.toString());
    }

    try{
    JSONArray jArray = new JSONArray(result);

    for(int i=0;i(this, android.R.layout.simple_expandable_list_item_1, donnees));
    }
    catch(JSONException e){
    Log.i("tagjsonexp",""+e.toString());
    } catch (ParseException e) {
    Log.i("tagjsonpars",""+e.toString());
    }

    }
    }


    sa me unfortunately,test has stopped

    RépondreSupprimer
  51. J'ai une petite question. Je vais utiliser cette méthode pour l'application que je dois déployer seulement il me faut beaucoup d'informations d'une BDD MYSQL existante.

    Il faut donc que je fasse un sacré nombre de requête différente. J'ai une question, je dois faire un fichier php par requête ou bien les faire toutes dans le même fichier.

    Autre question comment je fais pour récupérer plusieurs requêtes différentes dans le même activité ?

    Merci beaucoup.

    Vivien

    RépondreSupprimer
    Réponses
    1. "je dois faire un fichier php par requête" No, surtout pas.Un seul fichier PHP..

      "comment je fais pour récupérer plusieurs requêtes différentes dans le même activité ?"
      json_datat.getString("champ"); pour récupérer le résultat de la requête select champ from..

      Supprimer
    2. ok je te remercie beaucoup

      Supprimer
    3. Mais comment je fais pour retourner plusieurs requête ?

      car pour retourner une requette on fait

      //on encode en JSON
      print(json_encode($output));
      mysql_free_result ($req2);

      mais si je dois retourner req1 et req2 par exemple ?

      Supprimer
    4. Personne n'a la réponse ?

      Supprimer
  52. Bonjour,
    J'ai essayer ton code qui m'a l'air très intéressant.
    Merci d'avance.
    Mais lorsque je veux l'exécuter dans l'AVD je rencontre une erreur de Null.PointerException
    - J'ai bien validé que ma page connexion_mysql.php était accessible via le navigateur web de l'AVD
    - La page affiche [{"0":"INPT","nom":"INPT"},{"0":"EHTP","nom":"EHTP"},{"0":"ENSIAS","nom":"ENSIAS"},{"0":"INSEA","nom":"INSEA"}]
    - mon AndroidManifest.xml contient bien la ligne suivante
    - Dans Eclipse aucune erreur

    Mais Lors du Run dans l'AVD j'obtient cela
    06-06 13:19:49.399: E/AndroidRuntime(1620): at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
    06-06 13:19:49.399: E/AndroidRuntime(1620): at org.json.JSONTokener.nextValue(JSONTokener.java:94)
    06-06 13:19:49.399: E/AndroidRuntime(1620): at org.json.JSONArray.(JSONArray.java:87)
    06-06 13:19:49.399: E/AndroidRuntime(1620): at org.json.JSONArray.(JSONArray.java:103)

    Peux tu m'aider STP?
    J'ai retourné le problème dans tous les sens et je bloque à ce niveau!
    En te remerciant,

    RépondreSupprimer
    Réponses
    1. Re,
      Après quelques heures, pour plus de précision et après avoir balisé le code de TAG il semblerai que cela provienne de cette action : httpclient.execute(httppost);
      il n'arrive pas à envoyer une requête httppost, reste à savoir pourquoi ?
      Dans l'attente d'une aide charitable
      @++

      Supprimer
    2. tu as bien autoriser les connexions dans le manifest de ton application ?

      Supprimer
  53. Bonjour à tous

    Tout fonctionne avec le tuto présenté au dessus, génial !!!

    Seulement j'ai une petite question, je m'explique.

    Je souhaite récupérer dans une EditText ce que l'utilisateur entre pour le passer en paramètre de ma requête, par exemple:

    Il tape dans un l'EditText Renault, je le met dans une variable (pas de problème), mais comment je fais pour après dans la requête du fichier php faire

    SELECT couleur, puissance FROM vehicule WHERE marque = maVariable donc Renault ???

    Je vous remercie,

    Vivien

    RépondreSupprimer
    Réponses
    1. Utilises nameValuePair: ArrayList nameValuePairs = new ArrayList();
      que tu remplies comme ça: nameValuePairs.add(new BasicNameValuePair("donne","valeur"));
      Et tu le recupères comme un simple POST dans le php..

      Supprimer
    2. Merci pour ta réponse, ça fonctionne, j'aurais voulu savoir également comment je fais pour retourner plusieurs résultats de requête du fichier PHP vers Java en passant par JSON:

      car pour retourner une requette on fait

      //on encode en JSON
      print(json_encode($output));
      mysql_free_result ($req2);

      mais si je dois retourner req1 et req2 par exemple ?

      Merci

      Vivien

      Supprimer
  54. bonjour, je me suis coincé. Il m'affiche "Infortunately,ecoles has stopped". et pour mon logcat il m'affiche

    06-15 07:50:56.097: E/AndroidRuntime(606): FATAL EXCEPTION: main
    06-15 07:50:56.097: E/AndroidRuntime(606): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.exemple.ecoles/com.exemple.ecoles.Main}: java.lang.NullPointerException
    06-15 07:50:56.097: E/AndroidRuntime(606): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
    06-15 07:50:56.097: E/AndroidRuntime(606): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
    06-15 07:50:56.097: E/AndroidRuntime(606): at android.app.ActivityThread.access$600(ActivityThread.java:123)
    06-15 07:50:56.097: E/AndroidRuntime(606): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
    06-15 07:50:56.097: E/AndroidRuntime(606): at android.os.Handler.dispatchMessage(Handler.java:99)
    06-15 07:50:56.097: E/AndroidRuntime(606): at android.os.Looper.loop(Looper.java:137)
    06-15 07:50:56.097: E/AndroidRuntime(606): at android.app.ActivityThread.main(ActivityThread.java:4424)
    06-15 07:50:56.097: E/AndroidRuntime(606): at java.lang.reflect.Method.invokeNative(Native Method)
    06-15 07:50:56.097: E/AndroidRuntime(606): at java.lang.reflect.Method.invoke(Method.java:511)
    06-15 07:50:56.097: E/AndroidRuntime(606): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    06-15 07:50:56.097: E/AndroidRuntime(606): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    06-15 07:50:56.097: E/AndroidRuntime(606): at dalvik.system.NativeStart.main(Native Method)
    06-15 07:50:56.097: E/AndroidRuntime(606): Caused by: java.lang.NullPointerException
    06-15 07:50:56.097: E/AndroidRuntime(606): at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
    06-15 07:50:56.097: E/AndroidRuntime(606): at org.json.JSONTokener.nextValue(JSONTokener.java:94)
    06-15 07:50:56.097: E/AndroidRuntime(606): at org.json.JSONArray.(JSONArray.java:87)
    06-15 07:50:56.097: E/AndroidRuntime(606): at org.json.JSONArray.(JSONArray.java:103)
    06-15 07:50:56.097: E/AndroidRuntime(606): at com.exemple.ecoles.Main.onCreate(Main.java:74)
    06-15 07:50:56.097: E/AndroidRuntime(606): at android.app.Activity.performCreate(Activity.java:4465)
    06-15 07:50:56.097: E/AndroidRuntime(606): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
    06-15 07:50:56.097: E/AndroidRuntime(606): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
    06-15 07:50:56.097: E/AndroidRuntime(606): ... 11 more

    veuillez m'aider svp.

    RépondreSupprimer
  55. tu as quoi à la ligne 74 du fichier main.java ?

    RépondreSupprimer
    Réponses
    1. j'ai " JSONArray jArray = new JSONArray(result);" a la ligne 74

      Supprimer
  56. svp je ferais quoi lors d'un probleme a la ligne
    "JSONArray jArray = new JSONArray(result);"?? et merci

    RépondreSupprimer
    Réponses
    1. Est-ce que ton fichier php isolé te donne le resultat?

      Supprimer
  57. Essai de faire des points d'arrêt pour trouver d'où vient le pointeur null

    RépondreSupprimer
  58. Personne pour me dire comment faire retourner plusieurs requête du fichier PHP ?

    car pour retourner une requette on fait

    //on encode en JSON
    print(json_encode($output));
    mysql_free_result ($req2);

    mais si je dois retourner req1 et req2 par exemple ?

    Merci

    Vivien

    PS: si cela intéresse quelqu'un j'ai écrit un article permettant de se lancer dans l'autoformation Android, voici le lien:

    http://blog.restomaniak.com/restomaniak-sur-votre-mobile/

    RépondreSupprimer
  59. Bonjour,
    merci pour ce tuto
    en faite j'ai crée une autre table et une autre activité qui contient les cycles d'étude de chaque école
    et je veux lorsque je clic sur une école de premier activité il me donné les les cycles correspondant avec le nom de l’école est un clé étranger de 2 table
    (exp select * from cycle where nom=$nom)
    je veux récupéré le nom de premier activité et le passer au url de 2 activité
    mais j'arrive pas à le faire
    pouvez vous m'aidez et si possible me donner le code de deux activité pour le faire
    merci d'avance

    RépondreSupprimer
  60. Bonjour,

    J'ai une petite question en ce qui concerne ce code, si j'ai un webservice local sur ma machine (jusque là c'est comme votre code), et que je crée un vHost dans mon fichier httpd, et que dans le fichier host je met 10.0.2.2 test.webservice.com (ce qui a donc été précédemment mi dans le vHost).

    Je me demandais pourquoi qd je met l'adresse test.webservice.com/test.php dans mes requête http, la valeur retournée est nul (enfin mon app plante en gros)?

    Merci d'avance pour votre réponse (c'est ptet pas aussi facile que si je testais en localhost sur ma machine ^^).

    RépondreSupprimer
  61. bonjour voila j'ai récupérer votre code et j'ai mis la permission changer le package mis la table le code php marche bien mais quand j'execute on me demande de forcer l'arret de l'application voila ce que j'ai dans mon log



    07-28 20:49:21.634: D/AndroidRuntime(261): Shutting down VM
    07-28 20:49:21.644: W/dalvikvm(261): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    07-28 20:49:21.644: E/AndroidRuntime(261): Uncaught handler: thread main exiting due to uncaught exception
    07-28 20:49:21.666: E/AndroidRuntime(261): java.lang.RuntimeException: Unable to start activity ComponentInfo{sdz.php.test/sdz.php.test.MainActivity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
    07-28 20:49:21.666: E/AndroidRuntime(261): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
    07-28 20:49:21.666: E/AndroidRuntime(261): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    07-28 20:49:21.666: E/AndroidRuntime(261): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    07-28 20:49:21.666: E/AndroidRuntime(261): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    07-28 20:49:21.666: E/AndroidRuntime(261): at android.os.Handler.dispatchMessage(Handler.java:99)
    07-28 20:49:21.666: E/AndroidRuntime(261): at android.os.Looper.loop(Looper.java:123)
    07-28 20:49:21.666: E/AndroidRuntime(261): at android.app.ActivityThread.main(ActivityThread.java:4363)
    07-28 20:49:21.666: E/AndroidRuntime(261): at java.lang.reflect.Method.invokeNative(Native Method)
    07-28 20:49:21.666: E/AndroidRuntime(261): at java.lang.reflect.Method.invoke(Method.java:521)
    07-28 20:49:21.666: E/AndroidRuntime(261): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    07-28 20:49:21.666: E/AndroidRuntime(261): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    07-28 20:49:21.666: E/AndroidRuntime(261): at dalvik.system.NativeStart.main(Native Method)
    07-28 20:49:21.666: E/AndroidRuntime(261): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
    07-28 20:49:21.666: E/AndroidRuntime(261): at android.app.ListActivity.onContentChanged(ListActivity.java:236)
    07-28 20:49:21.666: E/AndroidRuntime(261): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:201)
    07-28 20:49:21.666: E/AndroidRuntime(261): at android.app.Activity.setContentView(Activity.java:1622)
    07-28 20:49:21.666: E/AndroidRuntime(261): at sdz.php.test.MainActivity.onCreate(MainActivity.java:30)
    07-28 20:49:21.666: E/AndroidRuntime(261): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    07-28 20:49:21.666: E/AndroidRuntime(261): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
    07-28 20:49:21.666: E/AndroidRuntime(261): ... 11 more
    07-28 20:49:21.696: I/dalvikvm(261): threadid=7: reacting to signal 3
    07-28 20:49:21.864: I/dalvikvm(261): Wrote stack trace to '/data/anr/traces.txt'


    merci de bien vouloir m'aider d'avance

    RépondreSupprimer
  62. bonjours svp aidez moi quand j’exécute le code une erreur se produit "unfortunately launcher has stopped"

    RépondreSupprimer
    Réponses
    1. merci bien pour le tuto j'ai connue mon erreur j'ai pas mis la permission internet

      Supprimer
  63. Bonjour,

    J'ai essayer le code ci dessus.
    Il n'y a pas d'erreur dans le logcat.
    J'ai ajouté aussi la permission , le truc de 10.0.2.2 mais le problème c'est que rien ne s'affiche j'ai meme essayé avec une Acttivity normal nin avec une ListActivity toujours rien. Est-ce quelqu'un a une idée. Merci ;)

    RépondreSupprimer
    Réponses
    1. Essaye d'executer ton fichier PHP seul sur le seveur voir si ça donne le résulat sur le navigateur.

      Supprimer
    2. Et bien voilà il me donne ça.

      [{"0":"ENSI","nom":"ENSI"},{"0":"ENSET","nom":"ENSET"}]

      Qu'est ce que t'en pense?

      Supprimer
  64. J'ai essayé aussi de voir si le problème provient de la variable jArray en recupérant la valeur de i vers la fin du programme après l'avoir rendue globale elle reste toujours égale à 0.

    JSONArray jArray = new JSONArray(result);

    for(int i=0;i<jArray.length();i++)

    RépondreSupprimer
    Réponses
    1. le jArray est donc vide! Les données n'ont pas été récupérées.
      N'existe-t-il pas d'exception remontée par les tags dans les catch?

      Supprimer
  65. Non j'ai re-compilé pour vérifier. Il s'est avéré qu'il y en a pas.

    RépondreSupprimer
    Réponses
    1. Pas trop d'indice pour t'aider ici.. Essayes de taper l'adresse 10.0.2.2 sur le navigateur de l'émulateur voir si c'est un problème d'accès au serveur.

      Supprimer
  66. Merci quand même.
    J'ai essayé, l'émulateur n'accède ni à
    172.0.0.1
    ni à
    localhost

    ni à 10.0.2.2

    RépondreSupprimer
  67. En fait, j'ai laissé tombé wamp, j'utilise maintenant un espace d'hebergement d'un ami. Ca marche propre nickel merci beacuoup.

    RépondreSupprimer
  68. bonjour,

    alors d'abord, super tuto, merci! ;-)

    ensuite, je voudrais afficher les data lues via php, non pas comme c'est fait ici, mais dans un SPINNER.

    malheureusement je rame, et je n'y arrive pas!

    y aurait-il moyen de reposter un code source, ou au moins la partie à modifier SVP?

    merci.

    RépondreSupprimer
  69. bonjour,
    tres bon tuto,qui marche
    mais j'ai un autre probleme comment peut on lire une image stockée dans une base de donnée via android??
    merci

    RépondreSupprimer
  70. Bonsoir ,
    Le tuto marche nickel :) mais en fait j'avais besoin d'afficher les données dans une liste faite en XML et non pas dans setListAdabpeter()

    RépondreSupprimer
  71. salut,c sebbar , j'ai pas reussie d'executer ce tuto il m'affiche application has stopped quelqu'un m'aider
    c'est les erreurs qui apparait dans le logcat

    02-07 00:21:43.313: W/Trace(726): Unexpected value from nativeGetEnabledTags: 0
    02-07 00:21:43.343: W/Trace(726): Unexpected value from nativeGetEnabledTags: 0
    02-07 00:21:43.643: I/taghttppost(726): org.apache.http.conn.HttpHostConnectException: Connection to http://10.0.2.2 refused
    02-07 00:21:44.004: I/tagconvertstr(726): java.lang.NullPointerException: lock == null
    02-07 00:21:44.023: D/AndroidRuntime(726): Shutting down VM
    02-07 00:21:44.033: W/dalvikvm(726): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
    02-07 00:21:44.163: E/AndroidRuntime(726): FATAL EXCEPTION: main
    02-07 00:21:44.163: E/AndroidRuntime(726): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test_connexion/com.example.test_connexion.MainActivity}: java.lang.NullPointerException
    02-07 00:21:44.163: E/AndroidRuntime(726): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
    02-07 00:21:44.163: E/AndroidRuntime(726): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
    02-07 00:21:44.163: E/AndroidRuntime(726): at android.app.ActivityThread.access$600(ActivityThread.java:141)
    02-07 00:21:44.163: E/AndroidRuntime(726): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
    02-07 00:21:44.163: E/AndroidRuntime(726): at android.os.Handler.dispatchMessage(Handler.java:99)
    02-07 00:21:44.163: E/AndroidRuntime(726): at android.os.Looper.loop(Looper.java:137)
    02-07 00:21:44.163: E/AndroidRuntime(726): at android.app.ActivityThread.main(ActivityThread.java:5039)
    02-07 00:21:44.163: E/AndroidRuntime(726): at java.lang.reflect.Method.invokeNative(Native Method)
    02-07 00:21:44.163: E/AndroidRuntime(726): at java.lang.reflect.Method.invoke(Method.java:511)
    02-07 00:21:44.163: E/AndroidRuntime(726): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    02-07 00:21:44.163: E/AndroidRuntime(726): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    02-07 00:21:44.163: E/AndroidRuntime(726): at dalvik.system.NativeStart.main(Native Method)
    02-07 00:21:44.163: E/AndroidRuntime(726): Caused by: java.lang.NullPointerException
    02-07 00:21:44.163: E/AndroidRuntime(726): at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
    02-07 00:21:44.163: E/AndroidRuntime(726): at org.json.JSONTokener.nextValue(JSONTokener.java:94)
    02-07 00:21:44.163: E/AndroidRuntime(726): at org.json.JSONArray.(JSONArray.java:87)
    02-07 00:21:44.163: E/AndroidRuntime(726): at org.json.JSONArray.(JSONArray.java:103)
    02-07 00:21:44.163: E/AndroidRuntime(726): at com.example.test_connexion.MainActivity.onCreate(MainActivity.java:74)
    02-07 00:21:44.163: E/AndroidRuntime(726): at android.app.Activity.performCreate(Activity.java:5104)
    02-07 00:21:44.163: E/AndroidRuntime(726): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
    02-07 00:21:44.163: E/AndroidRuntime(726): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
    02-07 00:21:44.163: E/AndroidRuntime(726): ... 11 more

    RépondreSupprimer
  72. salut. j'ai essayé votre code mais sa tourne pas chez moi.sachant que j'ai ajoute la permission internet et jai essaye de changer le code php ac celui qui a été mentionné dans les commentaires precedent .veuiller svp m'aider c tres urgent car votre code est tres utile pr moi .voici le contenue du logcat
    02-16 20:22:25.662: E/AndroidRuntime(8389): FATAL EXCEPTION: main
    02-16 20:22:25.662: E/AndroidRuntime(8389): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Mobilerie.com/com.Mobilerie.com.ConnexionSqlActivity}: java.lang.NullPointerException
    02-16 20:22:25.662: E/AndroidRuntime(8389): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at android.app.ActivityThread.access$600(ActivityThread.java:141)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at android.os.Handler.dispatchMessage(Handler.java:99)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at android.os.Looper.loop(Looper.java:137)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at android.app.ActivityThread.main(ActivityThread.java:5039)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at java.lang.reflect.Method.invokeNative(Native Method)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at java.lang.reflect.Method.invoke(Method.java:511)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at dalvik.system.NativeStart.main(Native Method)
    02-16 20:22:25.662: E/AndroidRuntime(8389): Caused by: java.lang.NullPointerException
    02-16 20:22:25.662: E/AndroidRuntime(8389): at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at org.json.JSONArray.(JSONArray.java:103)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at com.Mobilerie.com.ConnexionSqlActivity.onCreate(ConnexionSqlActivity.java:73)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at android.app.Activity.performCreate(Activity.java:5104)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
    02-16 20:22:25.662: E/AndroidRuntime(8389): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
    02-16 20:22:25.662: E/AndroidRuntime(8389): ... 11 more

    RépondreSupprimer
  73. bonsoir est ce que je peut savoir comment faire pour affiche les donné dans une page xml et qui est relié aussin d'une autre page affichageitem.xml???et merci

    RépondreSupprimer
  74. salut, je fait mon pfe(site web et application Android)j'utilise php pour le site et eclipse pour l'application Andoid. Quelle est le nom du serveur dans ce cas??
    Merci

    RépondreSupprimer
  75. salut je fait mon projet de fin d'annee (application android ) .j'ai trouvee une diffcultee avec la connexion avec la base de donnee
    le probleme est dans l'url ??
    HttpResponse response = httpclient.execute(httppost);

    RépondreSupprimer
  76. salut le serveur qui est dans le schéma est un serveur de web service ou bien un serveur de BD qui se trouve avec PHP???
    Merci

    RépondreSupprimer
  77. j'ai pas pu localiser exactement lerreur



    03-07 15:39:49.763: E/AndroidRuntime(741): FATAL EXCEPTION: main
    03-07 15:39:49.763: E/AndroidRuntime(741): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.soo/com.example.soo.MainActivity}: java.lang.NullPointerException
    03-07 15:39:49.763: E/AndroidRuntime(741): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
    03-07 15:39:49.763: E/AndroidRuntime(741): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
    03-07 15:39:49.763: E/AndroidRuntime(741): at android.app.ActivityThread.access$600(ActivityThread.java:141)
    03-07 15:39:49.763: E/AndroidRuntime(741): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
    03-07 15:39:49.763: E/AndroidRuntime(741): at android.os.Handler.dispatchMessage(Handler.java:99)
    03-07 15:39:49.763: E/AndroidRuntime(741): at android.os.Looper.loop(Looper.java:137)
    03-07 15:39:49.763: E/AndroidRuntime(741): at android.app.ActivityThread.main(ActivityThread.java:5039)
    03-07 15:39:49.763: E/AndroidRuntime(741): at java.lang.reflect.Method.invokeNative(Native Method)
    03-07 15:39:49.763: E/AndroidRuntime(741): at java.lang.reflect.Method.invoke(Method.java:511)
    03-07 15:39:49.763: E/AndroidRuntime(741): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    03-07 15:39:49.763: E/AndroidRuntime(741): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    03-07 15:39:49.763: E/AndroidRuntime(741): at dalvik.system.NativeStart.main(Native Method)
    03-07 15:39:49.763: E/AndroidRuntime(741): Caused by: java.lang.NullPointerException
    03-07 15:39:49.763: E/AndroidRuntime(741): at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
    03-07 15:39:49.763: E/AndroidRuntime(741): at org.json.JSONTokener.nextValue(JSONTokener.java:94)
    03-07 15:39:49.763: E/AndroidRuntime(741): at org.json.JSONArray.(JSONArray.java:87)
    03-07 15:39:49.763: E/AndroidRuntime(741): at org.json.JSONArray.(JSONArray.java:103)
    03-07 15:39:49.763: E/AndroidRuntime(741): at com.example.soo.MainActivity.onCreate(MainActivity.java:79)
    03-07 15:39:49.763: E/AndroidRuntime(741): at android.app.Activity.performCreate(Activity.java:5104)
    03-07 15:39:49.763: E/AndroidRuntime(741): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
    03-07 15:39:49.763: E/AndroidRuntime(741): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
    03-07 15:39:49.763: E/AndroidRuntime(741): ... 11 more

    RépondreSupprimer
  78. Bonjour a tous
    Merci pour ce bon tuto
    A mon niveau tout fonctionne correctement.
    Mais j'ai un petit souci.Je veux afficher sur une même ligne
    les cagoteries à coté des noms mais je ne sais pas comment le faire.

    Merci pour votre aide.

    RépondreSupprimer
    Réponses
    1. Il faut que tu modifies ton Xml. Regardes mon tuto sur la liste des logos, ça peut t'aider

      Supprimer
  79. Bonjour ,j'ai executé l'application mais elle ne m'affiche rien c'est quoi le probléme?

    RépondreSupprimer
  80. e veux afficher avec des items personnalisse dans la list est ce que tu peux m'aider

    RépondreSupprimer
  81. Bonjour et je vous remercie pour ce tuto

    voila j'ai bien exécute le code mais ça marche pas j'ai l'erreur suivante au niveau du Logcat

    04-08 11:43:24.446: E/AndroidRuntime(771): FATAL EXCEPTION: main
    04-08 11:43:24.446: E/AndroidRuntime(771): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.json/com.example.json.ConnexionSQLActivity}: java.lang.NullPointerException
    04-08 11:43:24.446: E/AndroidRuntime(771): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
    04-08 11:43:24.446: E/AndroidRuntime(771): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
    04-08 11:43:24.446: E/AndroidRuntime(771): at android.app.ActivityThread.access$600(ActivityThread.java:141)
    04-08 11:43:24.446: E/AndroidRuntime(771): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)

    qu'est ce que je dois modifier

    je vous remercie pour votre aide
    yasmine

    RépondreSupprimer
  82. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer
  83. Est'il possible d'utiliser la PDO:: en PHP ?

    RépondreSupprimer
  84. Salut j'ai un problème lors de l'éxecution du programme

    LOG CAT :
    04-09 08:59:43.806: E/log_tag(5245): Error in http connection android.os.NetworkOnMainThreadException

    Je comprend pas cette erreur, merci de bien vouloir m'aider

    RépondreSupprimer
    Réponses
    1. salut javais la meme erreur alors jai ajouté le port 8080 a l'adesse de l'url comme suit
      HttpPost httppost = new HttpPost("http://10.0.2.2:8080/connexion_mysql/connexion_mysql.php");
      inchalah ça marchera pour vs
      yasmine

      Supprimer
  85. salut je veux afficher les données dans la base à partir de mon application android..comment faire svp?

    RépondreSupprimer
    Réponses
    1. bonjour
      comment ça afficher les données dans la base ? c'est pas clair votre question
      veuillez réexpliquer
      yasmine

      Supprimer
    2. Ce commentaire a été supprimé par l'auteur.

      Supprimer
    3. Bonjour,Je souhaite réaliser une application qui permet d'ajouter des informations a partir d'une formulaire Android dans une base de donnée Mysql,par exemple envoyer un message récupéré d'une EditText vers un table de ma base.

      Supprimer
  86. Bonjour

    aprés une recherche qui ma couté 2 jours jai trouvé la solution a mon probleme!
    voila il faut mettre
    HttpPost httppost = new HttpPost("http://10.0.2.2:8080/connexion_mysql/connexion_mysql.php");
    et voila merci a vous et bonne suite

    RépondreSupprimer
  87. bonjour, je me suis coincé. Il m'affiche "Infortunately,mobilerie has stopped".

    RépondreSupprimer
  88. bonjour j'ai utilisé votre tuto g le message Unfortunately lapplication has stopped
    voici mon code

    package com.example.pfe;

    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;

    //import org.apache.commons.logging.Log;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    //import org.apache.http.ParseException;
    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.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    import android.net.ParseException;

    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.ArrayAdapter;
    import android.widget.Toast;

    public class Lister_taches extends Activity{
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.lister_produit);
    String result = null;
    InputStream is = null;
    JSONObject json_data=null;
    ArrayList nameValuePairs = new ArrayList();
    ArrayList donnees = new ArrayList();

    try{
    //commandes httpClient
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://10.0.2.2/Lister_taches.php");
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    is = entity.getContent();
    }
    catch(Exception e){

    Log.i("taghttppost",""+e.toString());
    Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
    }


    //conversion de la réponse en chaine de caractère
    try
    {
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));

    StringBuilder sb = new StringBuilder();

    String line = null;

    while ((line = reader.readLine()) != null)
    {
    sb.append(line + "\n");
    }

    is.close();

    result = sb.toString();
    }
    catch(Exception e)
    {
    Toast.makeText(this, "une erreur", Toast.LENGTH_SHORT).show();
    Log.i("tagconvertstr",""+e.toString());
    }
    //recuperation des donnees json
    try{
    JSONArray jArray = new JSONArray(result);

    for(int i=0;i(this, android.R.layout.simple_expandable_list_item_1, donnees));
    }
    catch(JSONException e){
    Log.i("tagjsonexp",""+e.toString());

    } catch (ParseException e) {
    Log.i("tagjsonpars",""+e.toString());

    }

    }

    private void setListAdapter(ArrayAdapter arrayAdapter) {
    // TODO Auto-generated method stub

    }
    }

    RépondreSupprimer
  89. voici également ce que j'ai au niveau du log

    05-09 09:49:23.699: E/AndroidRuntime(770): FATAL EXCEPTION: main

    05-09 09:49:23.699: E/AndroidRuntime(770): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pfe/com.example.pfe.Lister_taches}: java.lang.NullPointerException
    05-09 09:49:23.699: E/AndroidRuntime(770):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)

    05-09 09:49:23.699: E/AndroidRuntime(770):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)

    05-09 09:49:23.699: E/AndroidRuntime(770):at android.app.ActivityThread.access$600(ActivityThread.java:141)

    05-09 09:49:23.699: E/AndroidRuntime(770):at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)

    05-09 09:49:23.699: E/AndroidRuntime(770):at android.os.Handler.dispatchMessage(Handler.java:99)

    05-09 09:49:23.699: E/AndroidRuntime(770):at android.os.Looper.loop(Looper.java:137)

    05-09 09:49:23.699: E/AndroidRuntime(770):at android.app.ActivityThread.main(ActivityThread.java:5039)

    05-09 09:49:23.699: E/AndroidRuntime(770):at java.lang.reflect.Method.invokeNative(Native Method)

    05-09 09:49:23.699: E/AndroidRuntime(770):at java.lang.reflect.Method.invoke(Method.java:511)

    05-09 09:49:23.699: E/AndroidRuntime(770):at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)

    05-09 09:49:23.699: E/AndroidRuntime(770):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)

    05-09 09:49:23.699: E/AndroidRuntime(770):at dalvik.system.NativeStart.main(Native Method)

    05-09 09:49:23.699: E/AndroidRuntime(770):Caused by: java.lang.NullPointerException

    05-09 09:49:23.699: E/AndroidRuntime(770):at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)

    05-09 09:49:23.699: E/AndroidRuntime(770):at org.json.JSONTokener.nextValue(JSONTokener.java:94)

    05-09 09:49:23.699: E/AndroidRuntime(770):at org.json.JSONArray.(JSONArray.java:87)

    05-09 09:49:23.699: E/AndroidRuntime(770):at org.json.JSONArray.(JSONArray.java:103)

    05-09 09:49:23.699: E/AndroidRuntime(770):at com.example.pfe.Lister_taches.onCreate(Lister_taches.java:79)

    05-09 09:49:23.699: E/AndroidRuntime(770):at android.app.Activity.performCreate(Activity.java:5104)

    05-09 09:49:23.699: E/AndroidRuntime(770):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)

    05-09 09:49:23.699: E/AndroidRuntime(770):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)

    05-09 09:49:23.699: E/AndroidRuntime(770): ... 11 more

    RépondreSupprimer
  90. j ai besoin d aide svp bloqué:
    voici mon log:




    07-18 12:10:04.997: D/dalvikvm(1163): GC_FOR_ALLOC freed 47K, 7% free 2614K/2792K, paused 54ms, total 58ms
    07-18 12:10:05.027: I/dalvikvm-heap(1163): Grow heap (frag case) to 3.283MB for 635812-byte allocation
    07-18 12:10:05.117: D/dalvikvm(1163): GC_FOR_ALLOC freed 2K, 6% free 3233K/3416K, paused 86ms, total 86ms
    07-18 12:10:05.207: D/dalvikvm(1163): GC_CONCURRENT freed <1K, 5% free 3248K/3416K, paused 10ms+5ms, total 93ms
    07-18 12:10:05.547: I/Choreographer(1163): Skipped 62 frames! The application may be doing too much work on its main thread.
    07-18 12:10:05.607: D/gralloc_goldfish(1163): Emulator without GPU emulation detected.
    07-18 12:10:21.777: I/(1163): avantSwitch
    07-18 12:10:21.848: I/(1163): apresSwitch
    07-18 12:10:21.848: I/Choreographer(1163): Skipped 38 frames! The application may be doing too much work on its main thread.
    07-18 12:10:22.007: I/(1163): avantOnCreateMenu2
    07-18 12:10:22.007: I/(1163): OnCreateMenu2
    07-18 12:10:22.017: I/(1163): avantappelphp
    07-18 12:10:22.107: I/(1163): apresappelphp
    07-18 12:10:22.668: I/taghttppost(1163): android.os.NetworkOnMainThreadException
    07-18 12:10:22.877: D/dalvikvm(1163): GC_CONCURRENT freed 141K, 8% free 3543K/3816K, paused 71ms+117ms, total 413ms
    07-18 12:10:22.947: I/tagconvertstr(1163): java.lang.NullPointerException: lock == null
    07-18 12:10:22.988: D/AndroidRuntime(1163): Shutting down VM
    07-18 12:10:22.997: W/dalvikvm(1163): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
    07-18 12:10:23.147: E/AndroidRuntime(1163): FATAL EXCEPTION: main
    07-18 12:10:23.147: E/AndroidRuntime(1163): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.catalogue/com.example.catalogue.Menu2}: java.lang.NullPointerException
    07-18 12:10:23.147: E/AndroidRuntime(1163): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
    07-18 12:10:23.147: E/AndroidRuntime(1163): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
    07-18 12:10:23.147: E/AndroidRuntime(1163): at android.app.ActivityThread.access$600(ActivityThread.java:141)
    07-18 12:10:23.147: E/AndroidRuntime(1163): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)


    apparament il voit pas le serveur j ai aussi essayer mon adressIP

    RépondreSupprimer
  91. bonjour, je suis un débutant en android et je doit developper une application qui poste et qui affiche des annonces venant d'un serveur distant.afin de cerner les concepts j'ai essayer votre tutoriel mais j’obtiens des erreurs dans mon logcat du genre:
    10-13 16:46:30.070: I/taghttppost(831): android.os.NetworkOnMainThreadException
    10-13 16:46:30.510: I/tagconvertstr(831): java.lang.NullPointerException: lock == null
    10-13 16:46:30.510: D/AndroidRuntime(831): Shutting down VM
    10-13 16:46:30.546: W/dalvikvm(831): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
    10-13 16:46:30.760: E/AndroidRuntime(831): FATAL EXCEPTION: main
    10-13 16:46:30.760: E/AndroidRuntime(831): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.cucu/com.example.cucu.MainActivity}: java.lang.NullPointerException



    aidez moi s'il vous plait .merci

    RépondreSupprimer