IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Application qui plante (client LDAP)


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut
    Bonjour,

    Je suis en train de faire un client LDAP pour Android, le code est fait mais quand je lance l'application sur l'émulateur, celle-ci s'arrête brutalement.

    Voici tout mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    package com.android.clientldap;
     
    import java.util.ArrayList;
    import java.util.Hashtable;
    import java.util.List;
     
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ArrayAdapter;
    //import android.widget.Button;
    import android.widget.ListView;
    import android.widget.Toast;
    import android.app.Activity;
    //import android.view.Menu;
     
    import javax.naming.Context;
    import javax.naming.Binding;
    //import javax.naming.Context;
    import javax.naming.ldap.LdapContext;
    import javax.naming.ldap.InitialLdapContext;
    import javax.naming.NamingEnumeration;
    import javax.naming.NamingException;
    //import javax.naming.directory.DirContext;
    //import javax.naming.directory.InitialDirContext;
     
    public class ClientLdapActivity extends Activity {
     
        //private Button         mButtonConnectLdap;
        private ListView     mResultatDuSearch;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //mButtonConnectLdap = (Button) findViewById(R.id.buttonConnect);
     
            // Initialise la liste des résultats du ldap search
            mResultatDuSearch = (ListView) findViewById(R.id.listeSearch);
        }
     
        public void connectLdap(View vue) {
            // Connexion à l'annuaire ldap
            Hashtable<String, String> env = new Hashtable<String, String>();
     
            env.put(Context.INITIAL_CONTEXT_FACTORY, 
                    "com.sun.jndi.ldap.LdapCtxFactory");
            env.put(Context.PROVIDER_URL, "ldap://192.168.**.**:389");
            env.put(Context.SECURITY_AUTHENTICATION, "simple");
            env.put(Context.SECURITY_PRINCIPAL, "cn=admin,");
            env.put(Context.SECURITY_CREDENTIALS, "*******");            
     
            try {
                List<String> test             = new ArrayList<String>();
                LdapContext context            = new InitialLdapContext(env, null);
                NamingEnumeration enumLdap     = context.listBindings("dc=test,");
     
                // Tant qu'il y a des résultats
                // Affiche dans la listView
                while (enumLdap.hasMore()) {
                    Binding b = (Binding) enumLdap.next();
                    test.add("nom : "         + b.getName());
                    test.add("objet : "     + b.getObject());
                    test.add("classe : "     + b.getClass());
     
                    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.activity_list_item, test);
                    mResultatDuSearch.setAdapter(adapter);
                }
     
                context.close();
            } catch (NamingException e) {
                Toast.makeText(ClientLdapActivity.this, "Erreur lors de la conexion à ldap", Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }
     
            Toast.makeText(ClientLdapActivity.this, "Fin du traitement !", Toast.LENGTH_SHORT).show();
        }
        /*@Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }*/
    }
    Le tag d'erreur est Android Runtime et les messages sont
    02-01 14:21:04.090: E/AndroidRuntime(3829): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)

    02-01 14:21:04.090: E/AndroidRuntime(3829): at android.os.Handler.dispatchMessage(Handler.java:99)
    Et bien d'autres de ce type...

    Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?

    Merci d'avance pour votre aide.

  2. #2
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 970
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 970
    Par défaut
    Donne les logs à la source du problème (provenant de ton package).

    Et ça fonctionne en live sur ton appareil?

    Rem: tu ne fais pourtant pas de threading dans ton code

  3. #3
    Membre averti
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut
    Donc a priori, il n'y aurait pas d'erreur de codage ?

    Et est-ce possible de se connecter à l'annuaire LDAP avec javax.naming sous Android ?
    Car j'ai testé le code dans une application Java et il fonctionne très bien...

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Moi j'ai bien une idée, mais il faudrait vérifier... en ayant TOUT le logcat de l'exception (et pas seulement deux lignes " at ...")

    En particulier les deux lignes avant les premiers " at..."
    et toutes les causes possible...


    Mon idée ? encore et toujours un NetworkOnMainThreadException.... utilisation du réseau dans le thread UI quoi...

  5. #5
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Par défaut
    Bonjour,

    De ce que l'on peut voir en faisant des recherches, l'API Java standard dans la version Android, ne permet pas d'utiliser LDAP à partir de celle-ci. Il faut donc passer par une API externe.

    Je n'ai pas testé, je ne peux rien en dire de plus mais visiblement on trouve facilement les infos.
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  6. #6
    Membre averti
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut
    Oui je sais qu'il existe une API pour Android qui est le SDK Unboundid mais il est un peut trop complexe pour ce que je veux faire, car je veux juste me connecter à un annuaire LDAP et lancer des recherches sur cet annuaire.

    Donc voici les logCat complets :
    02-04 13:12:31.850: W/Trace(880): Unexpected value from nativeGetEnabledTags: 0
    02-04 13:12:31.850: W/Trace(880): Unexpected value from nativeGetEnabledTags: 0
    02-04 13:12:32.049: E/dalvikvm(880): Could not find class 'javax.naming.ldap.InitialLdapContext', referenced from method com.android.clientldap.ClientLdapActivity.connectLdap
    02-04 13:12:32.049: E/dalvikvm(880): Could not find class 'javax.naming.ldap.InitialLdapContext', referenced from method com.android.clientldap.ClientLdapActivity.connectLdap
    02-04 13:12:32.049: W/dalvikvm(880): VFY: unable to resolve new-instance 546 (Ljavax/naming/ldap/InitialLdapContext;) in Lcom/android/clientldap/ClientLdapActivity;
    02-04 13:12:32.049: W/dalvikvm(880): VFY: unable to resolve exception class 545 (Ljavax/naming/NamingException;)
    02-04 13:12:32.089: E/AndroidRuntime(880): FATAL EXCEPTION: main
    02-04 13:12:32.089: E/AndroidRuntime(880): java.lang.VerifyError: com/android/clientldap/ClientLdapActivity
    02-04 13:12:32.089: E/AndroidRuntime(880): at java.lang.Class.newInstanceImpl(Native Method)
    02-04 13:12:32.089: E/AndroidRuntime(880): at java.lang.Class.newInstance(Class.java:1319)
    02-04 13:12:32.089: E/AndroidRuntime(880): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
    02-04 13:12:32.089: E/AndroidRuntime(880): at android.os.Handler.dispatchMessage(Handler.java:99)
    02-04 13:12:32.089: E/AndroidRuntime(880): at android.os.Looper.loop(Looper.java:137)
    02-04 13:12:32.089: E/AndroidRuntime(880): at android.app.ActivityThread.main(ActivityThread.java:5039)
    02-04 13:12:32.089: E/AndroidRuntime(880): at java.lang.reflect.Method.invokeNative(Native Method)
    02-04 13:12:32.089: E/AndroidRuntime(880): at java.lang.reflect.Method.invoke(Method.java:511)
    02-04 13:12:32.089: E/AndroidRuntime(880): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    02-04 13:12:32.089: E/AndroidRuntime(880): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    02-04 13:12:32.089: E/AndroidRuntime(880): at dalvik.system.NativeStart.main(Native Method)

Discussions similaires

  1. Application qui plante (quitter, click sur listeView)
    Par jonathantarabbia dans le forum Android
    Réponses: 20
    Dernier message: 17/01/2011, 13h36
  2. [WD15] Application qui plante uniquement sur un poste
    Par mik3.42 dans le forum WinDev
    Réponses: 3
    Dernier message: 09/04/2010, 09h38
  3. Thread et application qui plante
    Par Balbuzard dans le forum Général Java
    Réponses: 10
    Dernier message: 29/08/2008, 16h36
  4. Application qui plante à cause des tabs ?
    Par astrolus dans le forum Windows Forms
    Réponses: 1
    Dernier message: 02/05/2008, 22h54
  5. Application qui plante quand lancé par sans débugage
    Par bossun dans le forum Général Dotnet
    Réponses: 9
    Dernier message: 12/07/2007, 12h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo