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
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());
}
}
}
bonjour,svp explique moi comment devrait etre la partie serveur lorsqu'on utilise xml pas json
RépondreSupprimersi 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épondreSupprimerMerci 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
Supprimert'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/
SupprimerMerci
Supprimersvp 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épondreSupprimeril faut tt simplement suivre étapes par etape le tuto, tout ira bien.
SupprimerBonjour,
RépondreSupprimerquel est la stricture du fichier XML ?
car je comprends pas comment cette liste va être intégrer dans la page a affiché ?
et Merci ;)
Bonjour,
RépondreSupprimerquel est la stricture du fichier XML ?
car je comprends pas comment cette liste va être intégrer dans la page a affiché ?
et Merci ;)
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));).
SupprimerSalut 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 :)
RépondreSupprimerhttp://www.tutos-android.com/parsing-json-jackson-android
merci bien de m aider :))
Bonjour Oussama,
SupprimerIl 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
mercie pour la reponse , mais j ai aussi un problème avec ton tuto
Supprimerj 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
est-ce que tu as définit la permission INTERNET_ACCESS dans ton manifest?
Supprimerc est ça , j ai oublier de définir la permission
Supprimermerci bien , ça marcher :))))) très gentil
content que ça marche :)
SupprimerTu peux aussi choisir un pseudo pour les postes, c'est mieux pour distinguer les auteurs des questions.
slt , j ai un petit probleme , pour adapter ce tuto au tuto de la personalisation de listview.
Supprimerj 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 :))
slt j'ai pas reussir d'éxuter ce tutoriel ,
RépondreSupprimerje 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 :)))
il faut poster le contenu de ton Log
Supprimersi tu utilise easy php tu doit changer l url en :
Supprimerhttp://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 :)
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.
RépondreSupprimerMerci encore une fois.
merci pour ce tuto
RépondreSupprimeril marche très bien dans mon cas
je veux savoir comment connaitre lorsque on clique sur un element
et passer a une autre activité
//Regard du coté de
SupprimersetOnItemClick(){
//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...
}
merci
Supprimermais 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 ??
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
SupprimerSinon, 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...
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
Supprimerimport 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());
}
}
}
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épondreSupprimerIl 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
SupprimerBonsoir s'il vous plait j'ai le même problème que vous, pourriez vous m'aider ?
Supprimerbon mtn jessai de reproduire votre exemple mé en vain jai un forcage d'arret sé pas pkoi
RépondreSupprimerpourtant 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)
Tu utilises un telephone physique en deboggage?
RépondreSupprimerC'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?
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épondreSupprimerLe tutoriel n'a rien à voir avec phoneGap..J'y reviendrais peut etre dans les jours à venir.
SupprimerMais 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.
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:
RépondreSupprimercoté client:phonegap sous eclipse
coté serveur: service web java,ou autre solution pour connecter a une bd et ajouter le champ. et erci.
ç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...
RépondreSupprimerPourtant 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
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);
Supprimerverifie 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..
Merci de ton aide rapide, en utilisant le deboggage, je trouve que le contenu de result est le suivant :
Supprimerhttp://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 :)
ça y est.. J'avais un soucis sur l'URL du php ^^
SupprimerEh bien content que c'est résolu :)
Supprimerbonsoir, merci pour votre tuto.
Supprimerje 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??
Dernière question, une fois que coté client a récupéré les données sous la forme suivante :
RépondreSupprimer{"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" ?
Oui ça existe et c'est à peu près ce que tu as écrit:
SupprimermaDonné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.
slt j'ai pas reussir d'éxuter ce tutoriel ,
RépondreSupprimerje 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)
Il faut voir dans ton manifest le chemin spécifié pour ton activité
Supprimersalut s'il vous plait tu as trouvé la solution tu peut m'aider mon erreur est comme votre erreur
SupprimerBsr SVP qu'est ce que vous voulais dire par : Il faut voir dans ton manifest le chemin spécifié pour ton activité ?? et merci
Supprimerj'ai le mème erreur comment tu as pu la résolu sachant bien que mon manifest est bien structuré
Supprimer;) sa marche mé r1 ne saffiche tu pé m'aider un autre fois voila mon log
RépondreSupprimer04-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
merci sa marche b1
RépondreSupprimerNouvelle 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épondreSupprimerPar données sensibles j'entends des données qui ne concerne qu'une seule personne tel qu'une adresse e-mail par exemple
RépondreSupprimerL'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.
Supprimerle 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épondreSupprimermerci bien! C'est en effet la plus value qui est partagée ici!
SupprimerSalut ! 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épondreSupprimerQuel 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.
Supprimersalut,c saddam , j''ai pas reussie d'executer ce tuto il m'affiche application has stopped quelqu'un m'aider
RépondreSupprimerc'est les erreurs qui apparait dans le logcat
RépondreSupprimer05-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
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:
Supprimercom.test.com.Recuperer.onCreate(Recuperer.java:78)
tu peut expliquer moi un peut car je suis debutant et merci
Supprimerj'ai suivé le demarche de tuto ,mais a chaque fois j'obtiens ce message d'erreur :
RépondreSupprimerNotice: 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
C'est une erreur dans ton code php.Postes ton code php.
Supprimervoici mon code php:
RépondreSupprimer// 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);
?>
essaies ça, en remplaçant $sql par $req, comme suit:
Supprimer$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.
j'ai essayer ,voici la nouvelle erreur :
RépondreSupprimerFatal 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é
Ajoutes ce bout de code dans ta boucle while, comme ça:
RépondreSupprimerwhile(...){
$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
désolé, petite correction au début: $output[]=$row;( les crochets)
SupprimerDésolé ,parceque j'ai posé plusieur de question et merci pour votre aide ,je suis débutante
RépondreSupprimerj'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
Je ne peux pas voir l'erreur comme ça.Essaie de voir la ligne 53 du fichier php, qu'est-ce qu'elle contient?
Supprimerok et merci bien pour l'aide
Supprimerbonjour, 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épondreSupprimerBonjour, 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"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?
SupprimerComprends d'abord bien les besoins de ton cahier de charges, ensuite modélise ton application et commence à la développer partie par partie ;-).
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"Comprends d'abord bien les besoins de ton cahier de charges, ensuite modélise ton application et commence à la développer partie par partie"..
Supprimerconcernant 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épondreSupprimerC'est peut être un problème lié à ton serveur..
Supprimerproblème comme quoi par exemple ???
Supprimerj'ai ce message dans le logcat request time failed: java.net.SocketException: Address family not supported by protocol
SupprimerPlusieurs causes possibles, sans être sûr, je pense à:
Supprimer-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)..
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épondreSupprimercomment faire pour récuperer les mots contenant le caractére "é"
RépondreSupprimerSalut,
RépondreSupprimerMerci 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
tu as reussie a executer ce tuto , tu peut m'aider a l'executer j'ai une erreur
SupprimerCe commentaire a été supprimé par l'auteur.
RépondreSupprimersalut 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épondreSupprimerBonjour,
RépondreSupprimerMerci 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.
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?
SupprimerJ'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.
SupprimerBonjour,
RépondreSupprimerSuper 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
Bonjour Vivien,
SupprimerPour 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é.
j'ai l'ordinateur, et le téléphone qui sont connecté sur le même réseau wifi, pourtant ça ne marche pas.
RépondreSupprimerAutres 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
ça devrait marché si le téléphone et le PC sont sur le même réseau..
SupprimerEn 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?
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:
SupprimerHttpPost httppost = new HttpPost("http://www.remybenoist.fr/test.php");
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
SupprimerOui c'est correct normallement. C'est la même chose, si tu convertis le "www.remybenoist.fr" en IP
Supprimerj'ai essayé également mais ça ne fonctionne pas.
SupprimerAvez tu réussi à le faire autrement qu'avec l'émulateur ?
Merci
Oui biensur, je l'ai testé sans problème sur un téléphone physique.
SupprimerSinon, 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.
Quand je clique sur test.php j'obtient ça
RépondreSupprimerFatal error: Call to undefined function: json_encode() in /homez.462/remybeno/www/test.php on line 11
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?
SupprimerCe commentaire a été supprimé par l'auteur.
RépondreSupprimerNon je n'ai pas eu cette erreur.
RépondreSupprimerSur 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.
Dans la console j'ai ses messages d'erreurs (mais l'application s'ouvre ça n'affiche jsute rien)
Supprimer[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.
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.
SupprimerMaintenant 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
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 ?
SupprimerTu remplaces juste ta boucle while.
RépondreSupprimerune petite erreur de crochets: $output[]=$row;
cool, maintenant quand je clique sur test.php j'obtient ça
Supprimer[{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"}]
mais ça ne m'affiche toujours rien dans l'application
SupprimerTu obtiens quelle erreur dans le logcat?
SupprimerTiens, tu peux regarder ce que me donne le logcat à l'adresse suivante:
RépondreSupprimerhttp://www.restomaniak.com/media/capture.png
Dsl s'était une erreur j'avais pas activer le net sur mon téléphone.
SupprimerRegarde ce lien: http://www.restomaniak.com/media/capture2.png
Donc rien dans le logcat mais aucun retour de la BDD dans l'application
Voilà ce que j'obtient sur le téléphone android:
Supprimerhttp://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"}]
j'ai ce message dans le logcat
Supprimer[2012-05-25 14:55:40 - ConnexionSQL] ActivityManager: Warning: Activity not started, its current task has been brought to the front
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..
SupprimerIl faut donc, la rélancer manuellement: précédent, précédent,... sur le téléphone, puis rélancer.
ç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 ?
SupprimerC'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
SupprimerMais, j'insiste: Même en local, ton téléphone et le PC doivent être connectés sur le même réseau.
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épondreSupprimerVérifies bien que c'est http://10.0.2.2/fichier.php et non http://10.0.2.2.fichier.php !
SupprimerEt Oui, ça devrait marché. Testes et dis-moi ce que tu obtiens
Quand je met http://10.0.2.2/test.php ça fonctionne si je compile sur l'émulateur.
SupprimerPar 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
OK. Tu confirmes bien qu'en tapant "192.168.0.12" sur le navigateur du téléphone, tu accèdes au serveur?
Supprimer192.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 ?
SupprimerCar 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
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..
SupprimerBon, 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.
En effet dans ce cas ça fonctionne voilà ce que j'obtiens:
Supprimerhttp://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
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 :).....
SupprimerBon, je t'en prie et je ne pense pas que je me donne du mal. Bonne suite dans tes projets.
Pourtant ça ne fonctionne pas, car quand je met: http://remybenoist.fr/test.php à la place ça ne fonctionne pas, je comprend vraiment pas...
SupprimerSi tu pouvais m'aider encore un petit peu se serait cool.
SupprimerMerci beaucoup
ça fonctionne avec http://remybenoist.fr/test.php sur l'émulateur mais pas sur le mobile, j'ai même une fermeture soudaine maintenant
SupprimerUne petite idée ?
SupprimerJe n'ai toujours pas réussi à le faire fonctionner...
RépondreSupprimerbonjour, 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épondreSupprimerImages, données, description... dans le même item d'une listView?
SupprimerVoir mon tuto sur la liste des logos: http://mobilerie.blogspot.com/2012/02/tutoriel-android-listes-des-logos.html
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 ..
SupprimerEt c'est pas une listView alors je coprends pas tout...
SupprimerC'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.
RépondreSupprimerMerci beaucoup de ton tuto.
:)
Supprimermon code ne marche pas alors que ma page sur les serveur est ok
RépondreSupprimerpackage 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
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.
RépondreSupprimerIl 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
"je dois faire un fichier php par requête" No, surtout pas.Un seul fichier PHP..
Supprimer"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..
ok je te remercie beaucoup
SupprimerMais comment je fais pour retourner plusieurs requête ?
Supprimercar 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 ?
Personne n'a la réponse ?
SupprimerBonjour,
RépondreSupprimerJ'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,
Re,
SupprimerAprè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
@++
tu as bien autoriser les connexions dans le manifest de ton application ?
SupprimerBonjour à tous
RépondreSupprimerTout 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
Utilises nameValuePair: ArrayList nameValuePairs = new ArrayList();
Supprimerque tu remplies comme ça: nameValuePairs.add(new BasicNameValuePair("donne","valeur"));
Et tu le recupères comme un simple POST dans le php..
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:
Supprimercar 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
bonjour, je me suis coincé. Il m'affiche "Infortunately,ecoles has stopped". et pour mon logcat il m'affiche
RépondreSupprimer06-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.
tu as quoi à la ligne 74 du fichier main.java ?
RépondreSupprimerj'ai " JSONArray jArray = new JSONArray(result);" a la ligne 74
Supprimersvp je ferais quoi lors d'un probleme a la ligne
RépondreSupprimer"JSONArray jArray = new JSONArray(result);"?? et merci
Est-ce que ton fichier php isolé te donne le resultat?
SupprimerEssai de faire des points d'arrêt pour trouver d'où vient le pointeur null
RépondreSupprimerPersonne pour me dire comment faire retourner plusieurs requête du fichier PHP ?
RépondreSupprimercar 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/
Bonjour,
RépondreSupprimermerci 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
Bonjour,
RépondreSupprimerJ'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 ^^).
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
RépondreSupprimer07-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
bonjours svp aidez moi quand j’exécute le code une erreur se produit "unfortunately launcher has stopped"
RépondreSupprimermerci bien pour le tuto j'ai connue mon erreur j'ai pas mis la permission internet
SupprimerBonjour,
RépondreSupprimerJ'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 ;)
Essaye d'executer ton fichier PHP seul sur le seveur voir si ça donne le résulat sur le navigateur.
SupprimerEt bien voilà il me donne ça.
Supprimer[{"0":"ENSI","nom":"ENSI"},{"0":"ENSET","nom":"ENSET"}]
Qu'est ce que t'en pense?
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.
RépondreSupprimerJSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++)
le jArray est donc vide! Les données n'ont pas été récupérées.
SupprimerN'existe-t-il pas d'exception remontée par les tags dans les catch?
Non j'ai re-compilé pour vérifier. Il s'est avéré qu'il y en a pas.
RépondreSupprimerPas 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.
SupprimerMerci quand même.
RépondreSupprimerJ'ai essayé, l'émulateur n'accède ni à
172.0.0.1
ni à
localhost
ni à 10.0.2.2
En fait, j'ai laissé tombé wamp, j'utilise maintenant un espace d'hebergement d'un ami. Ca marche propre nickel merci beacuoup.
RépondreSupprimerC'etait donc un problème d'accès serveur..
Supprimerbonjour,
RépondreSupprimeralors 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.
bonjour,
RépondreSupprimertres 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
Bonsoir ,
RépondreSupprimerLe 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()
salut,c sebbar , j'ai pas reussie d'executer ce tuto il m'affiche application has stopped quelqu'un m'aider
RépondreSupprimerc'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
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
RépondreSupprimer02-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
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épondreSupprimersalut, 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??
RépondreSupprimerMerci
tu peut travailler sur xxampp
Supprimersalut je fait mon projet de fin d'annee (application android ) .j'ai trouvee une diffcultee avec la connexion avec la base de donnee
RépondreSupprimerle probleme est dans l'url ??
HttpResponse response = httpclient.execute(httppost);
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???
RépondreSupprimerMerci
j'ai pas pu localiser exactement lerreur
RépondreSupprimer03-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
Bonjour a tous
RépondreSupprimerMerci 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.
Il faut que tu modifies ton Xml. Regardes mon tuto sur la liste des logos, ça peut t'aider
SupprimerBonjour ,j'ai executé l'application mais elle ne m'affiche rien c'est quoi le probléme?
RépondreSupprimerCe commentaire a été supprimé par l'auteur.
Supprimere veux afficher avec des items personnalisse dans la list est ce que tu peux m'aider
RépondreSupprimerBonjour et je vous remercie pour ce tuto
RépondreSupprimervoila 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
Ce commentaire a été supprimé par l'auteur.
RépondreSupprimerEst'il possible d'utiliser la PDO:: en PHP ?
RépondreSupprimerSalut j'ai un problème lors de l'éxecution du programme
RépondreSupprimerLOG 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
salut javais la meme erreur alors jai ajouté le port 8080 a l'adesse de l'url comme suit
SupprimerHttpPost httppost = new HttpPost("http://10.0.2.2:8080/connexion_mysql/connexion_mysql.php");
inchalah ça marchera pour vs
yasmine
salut je veux afficher les données dans la base à partir de mon application android..comment faire svp?
RépondreSupprimerbonjour
Supprimercomment ça afficher les données dans la base ? c'est pas clair votre question
veuillez réexpliquer
yasmine
Ce commentaire a été supprimé par l'auteur.
SupprimerBonjour,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.
SupprimerBonjour
RépondreSupprimerapré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
bonjour, je me suis coincé. Il m'affiche "Infortunately,mobilerie has stopped".
RépondreSupprimerbonjour j'ai utilisé votre tuto g le message Unfortunately lapplication has stopped
RépondreSupprimervoici 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
}
}
voici également ce que j'ai au niveau du log
RépondreSupprimer05-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
j ai besoin d aide svp bloqué:
RépondreSupprimervoici 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
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:
RépondreSupprimer10-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