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

API standards et tierces Android Discussion :

Problème de connexion via HttpURLConnection


Sujet :

API standards et tierces Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Par défaut Problème de connexion via HttpURLConnection
    Bonjour,

    J'essaye de mettre en place une page "Login" en place sur mon application (Android 5.1 API 22). Pour cela je passe pas un "services web php".
    J'ai verifié mon url qui est bien valide, j'effectue la connexion avec HttpURLConnection dans une classe hérité de AsyncTask. J'ai simplifie mon code au maximum pour tester uniquement la connexion sans succès, j'ai testé pas mal de chose et j'avoue que je suis un peu perdu

    Ma page "Login" :
    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
    package com.example.toto42.myapp;
     
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
     
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    public class LogIn extends AppCompatActivity implements View.OnClickListener {
        protected EditText login = null;
        protected EditText pass = null;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_log_in);
     
            login = (EditText) findViewById(R.id.acc_email);
            pass = (EditText) findViewById(R.id.acc_password);
            final Button connexion = (Button) findViewById(R.id.acc_connexion);
     
            connexion.setOnClickListener(this);
        }
     
        @Override
        public void onClick(View v) {
            final String email = login.getText().toString();
            final String password = pass.getText().toString();
     
            if (email.equals("") || password.equals("")) {
                Toast.makeText(LogIn.this, R.string.acc_error_empty, Toast.LENGTH_SHORT).show();
                return;
            }
            Pattern pattern = Pattern.compile(".+@+[a-z]+.[a-z]+");
            Matcher matcher = pattern.matcher(email);
            if (!matcher.matches()) {
                Toast.makeText(LogIn.this, R.string.acc_error_email, Toast.LENGTH_SHORT).show();
                return;
            }
            getUser();
        }
     
        private void getUser() {
            new WebService().execute();
        }
    }
    Ma classe "WebService"
    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
    package com.example.toto42.myapp;
     
    import android.os.AsyncTask;
    import android.util.Log;
     
    import com.google.gson.Gson;
     
    import org.json.JSONObject;
     
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
     
    /**
     * Created by toto42 on 16/09/15.
     */
    public class WebService extends AsyncTask<Void, Void, Void> {
        private String urlLogin =  "http://mobile_app.olympe.in/login.php";
     
        @Override
        protected Void doInBackground(Void... params) {
     
            int idUser = getIdUser();
            Log.d("idUser", "AsyncTask " + idUser);
            return null;
        }
     
        private InputStream sendRequest(URL url) throws Exception {
            try {
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.setDoOutput(true);
                urlConnection.setRequestMethod("GET");
     
                urlConnection.connect();
                if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                    return urlConnection.getInputStream();
                }
            } catch (MalformedURLException e) {
                Log.d("Web service", "MalformedURL");
            } catch (IOException e) {
                Log.d("Web service", "IOException");
            } catch (Exception e) {
                throw new Exception("input stream");
            }
            return null;
        }
     
        public int getIdUser() {
            try {
                InputStream inputStream = sendRequest(new URL(urlLogin));
     
                if (inputStream != null) {
                    InputStreamReader reader = new InputStreamReader(inputStream);
                    JSONObject job = new Gson().fromJson(reader, JSONObject.class);
     
                    String result = job.get("Id").toString();
                    return Integer.parseInt(result.toString());
                }
            } catch (MalformedURLException e) {
                Log.d("Web service", "getIdUSER  1");
                e.printStackTrace();
            } catch (Exception e) {
                Log.d("Web service", "getIdUSER  2");
                e.printStackTrace();
            }
            return -1;
        }
    }
    J'ajoute également le Logcat
    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
     
    09-16 23:05:57.393    1217-1685/? I/ActivityManager﹕ START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.therou_g.myapp/.LogIn} from uid 0 on display 0
    09-16 23:05:57.393    1217-1685/? V/WindowManager﹕ addAppToken: AppWindowToken{22bab936 token=Token{242d4ad1 ActivityRecord{350d05f8 u0 com.example.therou_g.myapp/.LogIn t7}}} to stack=1 task=7 at 0
    09-16 23:05:57.397    1217-1243/? V/WindowManager﹕ Adding window Window{8d8309 u0 Starting com.example.therou_g.myapp} at 2 of 7 (after Window{3ee0011c u0 com.android.launcher/com.android.launcher2.Launcher})
    09-16 23:05:57.405    2398-2398/? D/AndroidRuntime﹕ Shutting down VM
    09-16 23:05:57.406    2398-2400/? I/art﹕ Debugger is no longer active
    09-16 23:05:57.410    2407-2407/? I/art﹕ Not late-enabling -Xcheck:jni (already on)
    09-16 23:05:57.415    1217-1234/? I/ActivityManager﹕ Start proc 2407:com.example.therou_g.myapp/u0a46 for activity com.example.therou_g.myapp/.LogIn
    09-16 23:05:57.418    2398-2406/? E/art﹕ Thread attaching while runtime is shutting down: Binder_1
    09-16 23:05:57.418    2398-2406/? I/AndroidRuntime﹕ NOTE: attach of thread 'Binder_1' failed
    09-16 23:05:57.537    2407-2422/? D/OpenGLRenderer﹕ Use EGL_SWAP_BEHAVIOR_PRESERVED: true
    09-16 23:05:57.538    2407-2407/? D/﹕ HostConnection::get() New Host Connection established 0xb42b3e60, tid 2407
    09-16 23:05:57.539    2407-2407/? D/Atlas﹕ Validating map...
    09-16 23:05:57.540    1217-1682/? V/WindowManager﹕ Adding window Window{3f01dbe6 u0 com.example.therou_g.myapp/com.example.therou_g.myapp.LogIn} at 2 of 8 (before Window{8d8309 u0 Starting com.example.therou_g.myapp})
    09-16 23:05:57.584    2407-2422/? D/﹕ HostConnection::get() New Host Connection established 0xb43f50e0, tid 2422
    09-16 23:05:57.588    2407-2422/? I/OpenGLRenderer﹕ Initialized EGL, version 1.4
    09-16 23:05:57.601    2407-2422/? D/OpenGLRenderer﹕ Enabling debug mode 0
    09-16 23:05:57.615    2407-2422/? W/EGL_emulation﹕ eglSurfaceAttrib not implemented
    09-16 23:05:57.615    2407-2422/? W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xb42ce5a0, error=EGL_SUCCESS
    09-16 23:05:58.221    2407-2407/? I/Choreographer﹕ Skipped 40 frames!  The application may be doing too much work on its main thread.
    09-16 23:05:58.290    1217-1243/? I/ActivityManager﹕ Displayed com.example.therou_g.myapp/.LogIn: +893ms
    09-16 23:06:00.956    1217-1309/? D/TaskPersister﹕ removeObsoleteFile: deleting file=6_task.xml
    09-16 23:06:06.859     930-1298/? W/AudioPolicyManager﹕ getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0
    09-16 23:06:06.859     930-2060/? W/AudioPolicyManager﹕ getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0
    09-16 23:06:06.860      930-930/? W/AudioPolicyManager﹕ getOutput() could not find output for stream 1, samplingRate 48000,format 1, channels 3, flags 4
    09-16 23:06:06.860    1217-1297/? E/AudioTrack﹕ Could not get audio output for stream type 1, usage 0, sample rate 48000, format 0x1, channel mask 0x3, flags 0x4
    09-16 23:06:06.863    1217-1297/? E/SoundPool﹕ Error creating AudioTrack
    09-16 23:06:06.866    2407-2426/? D/Web service﹕ getIdUSER  2
    09-16 23:06:06.866    2407-2426/? W/System.err﹕ java.lang.Exception: input stream
    09-16 23:06:06.866    2407-2426/? W/System.err﹕ at com.example.therou_g.myapp.WebService.sendRequest(WebService.java:46)
    09-16 23:06:06.866    2407-2426/? W/System.err﹕ at com.example.therou_g.myapp.WebService.getIdUser(WebService.java:53)
    09-16 23:06:06.866    2407-2426/? W/System.err﹕ at com.example.therou_g.myapp.WebService.doInBackground(WebService.java:26)
    09-16 23:06:06.866    2407-2426/? W/System.err﹕ at com.example.therou_g.myapp.WebService.doInBackground(WebService.java:20)
    09-16 23:06:06.867    2407-2426/? W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:292)
    09-16 23:06:06.867    2407-2426/? W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    09-16 23:06:06.867    2407-2426/? W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
    09-16 23:06:06.867    2407-2426/? W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    09-16 23:06:06.867    2407-2426/? W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    09-16 23:06:06.867    2407-2426/? W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
    09-16 23:06:06.867    2407-2426/? D/idUser﹕ AsyncTask -1
    N'étant pas un grand habitué des forums j'espère n'avoir rien oublié.

    Merci par avance a ceux qui prendrons la peine de me lire.

  2. #2
    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
    Comme quoi vouloir parfois "trop" catcher les exceptions c'est aussi le mal

    Dans le cas d'une AsyncTask, il n'y a absoluement aucun interêt à le faire *sauf* au plus haut niveau !

    par exemple:
    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
     
    class WebService extends AsyncTask<Void,Void,Integer>  // <= faut bien renvoyer quelque chose tout de même !
    {
         @Override
        public Integer doInBackground(Void ... params)
        {
              // ici on manage les exceptions
              try {
                  int id = getIdUser();
                  Log.d("WebService","Id de l'utilisateur: "+id);
                  return Integer.valueOf(id);
              } catch (Exception ex) {
                  // pas de ex.printStackTrace c'est le mal... et si on throw une nouvelle exception, on n'oublie pas de coller la précédente en "caus"
                  // pas non plus besoin de faire des trucs plus compliqué avec plusieurs types d'exceptions....
                  Log.e("WebService","Erreur de récupération de l'ID !",ex);
                  return null;
              }
         }
     
        public int getIdUser() throws Exception // <= pour être propre il faudrait se limiter aux exceptions que la classe est susceptible de lancer !
        {
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
            urlConnection.setDoOutput(true);
            urlConnection.setRequestMethod("GET"); // pas utile pour le "GET" hein !
     
            urlConnection.connect();
            if (urlConnection.getResponseCode() != HttpURLConnection.HTTP_OK)
                throw new IOException("Invalid response: "+urlConnection.getResponseMessage());  // pas la peine de continuer !
     
            InputStreamReader reader = null;
            try { // là on fait un try... mais pas pour catcher les exceptions, juste pour être sur que le stream sera correctement fermé en sortie de fonction !!!
                 reader = new InputStreamReader(urlConnection.getInputStream());
                 JSONObject job = new Gson().fromJson(reader, JSONObject.class);
                 String result = job.get("Id").toString();
                 return Integer.parseInt(result.toString());
            } finally {
                if (reader != null) try { reader.close(); } catch (Exception ex) { Log.wtf("Web Service","Failed to gracefully close stream !",ex);
            }
        }
    }

    Dans ton code, là... il y a clairement une exception autre que MalformedUrlException (on s'en douterais vu que tu maitrise l'URL à 100%) ou IOException dans la fonction sendRequest.

    Le code executé est alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    catch (Exception e) {
        throw new Exception("input stream");
    }
    Qui va donc lancer une "exception" générique (pas sur que c'est ce qu'on veuille... IOException peut-être ?) mais surtout va "oublier" l'exception initiale (e) et du coup, on a rien dans le log.
    throw new Exception("input stream",e); par exemple aurait été mieux (mais à peine puisqu'on fait du simple e.printStackTrace() derriere dans getIdUser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    } catch (Exception e) {
                Log.d("Web service", "getIdUSER  2");
                e.printStackTrace();         }
    On voit bien le log (debug seulement ? ce devrait être une erreur).
    Et d'autre part, Log propose aussi de logger les exceptions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Log.e("Web service","getIdUSER failed",e);
    Pas besoin de e.printStackTrace() dans ce cas là (et en plus ça gère les causes et tout )

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Par défaut
    Bonjour,

    Merci pour cette réponse rapide, et très instructif.

    cependant le problème persiste même si les message d'erreur sont plus clair ^^

    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
    09-17 07:56:51.968    1978-2001/? E/WebService﹕ Erreur de récupération de l'ID !
        java.lang.SecurityException: Permission denied (missing INTERNET permission?)
                at java.net.InetAddress.lookupHostByName(InetAddress.java:451)
                at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
                at java.net.InetAddress.getAllByName(InetAddress.java:215)
                at com.android.okhttp.HostResolver$1.getAllByName(HostResolver.java:29)
                at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:232)
                at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:124)
                at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:272)
                at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211)
                at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:382)
                at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:106)
                at com.example.therou_g.myapp.WebService.getIdUser(WebService.java:38)
                at com.example.therou_g.myapp.WebService.doInBackground(WebService.java:24)
                at com.example.therou_g.myapp.WebService.doInBackground(WebService.java:18)
                at android.os.AsyncTask$2.call(AsyncTask.java:292)
                at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                at java.lang.Thread.run(Thread.java:818)
         Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
                at libcore.io.Posix.android_getaddrinfo(Native Method)
                at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
                at java.net.InetAddress.lookupHostByName(InetAddress.java:438)
    ************at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
    ************at java.net.InetAddress.getAllByName(InetAddress.java:215)
    ************at com.android.okhttp.HostResolver$1.getAllByName(HostResolver.java:29)
    ************at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:232)
    ************at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:124)
    ************at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:272)
    ************at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211)
    ************at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:382)
    ************at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:106)
    ************at com.example.therou_g.myapp.WebService.getIdUser(WebService.java:38)
    ************at com.example.therou_g.myapp.WebService.doInBackground(WebService.java:24)
    ************at com.example.therou_g.myapp.WebService.doInBackground(WebService.java:18)
    ************at android.os.AsyncTask$2.call(AsyncTask.java:292)
    ************at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    ************at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
    ************at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    ************at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    ************at java.lang.Thread.run(Thread.java:818)
         Caused by: android.system.ErrnoException: android_getaddrinfo failed: EACCES (Permission denied)
    ************at libcore.io.Posix.android_getaddrinfo(Native Method)
    ************at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
    ************at java.net.InetAddress.lookupHostByName(InetAddress.java:438)
    ************at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
    ************at java.net.InetAddress.getAllByName(InetAddress.java:215)
    ************at com.android.okhttp.HostResolver$1.getAllByName(HostResolver.java:29)
    ************at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:232)
    ************at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:124)
    ************at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:272)
    ************at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211)
    ************at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:382)
    ************at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:106)
    ************at com.example.therou_g.myapp.WebService.getIdUser(WebService.java:38)
    ************at com.example.therou_g.myapp.WebService.doInBackground(WebService.java:24)
    ************at com.example.therou_g.myapp.WebService.doInBackground(WebService.java:18)
    ************at android.os.AsyncTask$2.call(AsyncTask.java:292)
    ************at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    ************at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
    ************at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    ************at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    ************at java.lang.Thread.run(Thread.java:818)
    Dans mon manifest j'ai pourtant :

    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
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.therou_g.myapp" >
     
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <uses-permission android:name="android.permission.INTERNET" />
            <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
            <activity
                android:name=".LogIn"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name=".Actuality"
                android:label="@string/app_name" >
            </activity>
        </application>
     
    </manifest>
    A force de tester pas mal de chose, j'avoue me énormément me perdre dans les messages d'erreur.

  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
    Ben là le message est explicite....
    java.lang.SecurityException: Permission denied (missing INTERNET permission?)
    Pourtant tu as bien le "uses-permission"...
    Un petit coup d'oeil sur la doc: http://developer.android.com/guide/t...n-element.html

    Et bim on trouve:
    [COLOR=rgba(0, 0, 0, 0.682353)]CONTAINED IN:
    [/COLOR]<manifest>
    Tes "uses-permission" sont dans l'application => ça ne va pas...

    Comment gères-tu le manifest ? Taper à la main c'est souvent la galère, l'édition par l'UI permet d'éviter ce genre de problèmes.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Par défaut
    effectivement j'ai ajouté les permissions "à la main" dans le manifest en m’appuient sur la doc http://developer.android.com/trainin...onnecting.html

    Que veut tu dire par :
    l'édition par l'UI permet d'éviter ce genre de problèmes.
    Edit: problème de connexion régler je passe je sujet en résolut.

    Mais si tu à encore des conseils en tout genre, ou des pièges à éviter je suis preneur.

  6. #6
    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
    Il n'y a pas dans Android Studio (à ma connaissance hélas) de moyen pour éditer le manifest de manière "assistée".
    La fonction existait dans Eclipse c'est dommage.

    Mais dans tous les cas, si le fichier XML est bien formé (en particulier avec xmlns:android="http://schemas.android.com/apk/res/android" au début), la validation automatique devrait prendre la main dans Android Studio.

    Ainsi, au simple appui sur "<" à l'intérieur du tag "application" par exempe, j'ai la liste des tags possibles qui s'affichent... (activity, activity-alias, meta-data, provider, receiver, service, uses-library.
    Pas de "uses-permission" ? c'est donc pas le bon endroit.

    Par contre le tag apparait correctement dans <manifest>. Même les valeurs attendues sont précisées.


    L'auto-completion est plus qu'une aide à la frappe rapide, c'est aussi une aide précieuse au développement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [11gR2] Problème de connexion via une app java
    Par af.zakaria dans le forum Connexions aux bases de données
    Réponses: 0
    Dernier message: 03/11/2013, 12h00
  2. [11gR2] Problème de connexion via le réseau
    Par linux user dans le forum Connexions aux bases de données
    Réponses: 1
    Dernier message: 18/07/2013, 20h42
  3. Problème de connexion via l'extérieur
    Par bubulemaster dans le forum Administration
    Réponses: 1
    Dernier message: 12/06/2008, 11h09
  4. problème de connexion via FTP
    Par ayago dans le forum Réseau
    Réponses: 2
    Dernier message: 08/02/2008, 22h57
  5. Probléme de connexion via un reseau local
    Par aurelien083 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 15/03/2006, 17h07

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