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 :

Acces a une URL depuis Emulateur - Permission Denied


Sujet :

Android

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Acces a une URL depuis Emulateur - Permission Denied
    Bonjour,

    En reprenant des exemples du site pour accéder a une URL et afficher le contenu (texte) d'un fichier HTML, j'obtiens l'erreur "Permission denied" a l'ouverture de l'URL, en exécutant ce code sur l'emulateur Nexus depuis Android Studio. L'adresse que je passe est "http://www.android.com/" 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
     
        public void getFile(String urlStr) throws IOException, URISyntaxException {
            int current;
     
            if (urlStr == null) {
                errorMsg.setText("getFile : null string");
                return;
            }
            URL url = null;
            url = new URL(urlStr);
            HttpURLConnection con;
            con = (HttpURLConnection) url.openConnection();
            con.setUseCaches(true);
            InputStream is = con.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(is, 8192);
     
             while ((current = bis.read()) != -1) {
                msg.setText(bis.toString());
                }
            return;
        }
    (Je développe sur Android Studio 2.2.2, Mac OSX Sierra 10.12.1)

    Merci !

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 67
    Points : 86
    Points
    86
    Par défaut
    Salut,

    As-tu bien la permission INTERNET dans ton Manifest ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Je suis sur l'émulation "de base" d'un téléphone Nexus 5, sans aucune personnalisation par rapport a l'installation standard... En "jouant" avec le téléphone, je navigue avec Chrome, Google Maps affiche bien les cartes... donc a priori l'émulation du téléphone arrive bien a récupérer des infos d'internet via le Mac.

    J'appelle la fonction getFile depuis une fonction du style "OnButtonClick", dans la classe MainActivity.java. Pas de contre-indications ???

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 67
    Points : 86
    Points
    86
    Par défaut
    Ce comportement est normal car les applications que tu cites ont dans leur Manifest la permission INTERNET
    Peux-tu c/c la stack complète d'erreur ? C'est uniquement pour en avoir le coeur net, mais il me semble qu'il n'y a pas d'ambiguïté !

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    OK compris ! Il y avait une double faute :

    1/ Manque la permission pour actes INTERNET (merci !)

    2/ Exception android.os.NetworkOnMainThreadException : on ne peut pas télécharger un fichier depuis l'action "OnClick" d'un bouton... c'est pas très temps réel, comme comportement !

    Probleme identifié, quasi-corrigé...

    Merci !

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Pour le 2, à partir d'Android 3, tu as cette exception pour éviter la très mauvaise habitude de faire des traitements longs sur le thread de rendu graphique, occasionnant un gel de l'interface.

    Il faut donc que tu passes soit par un Thread, soit par une AsyncTask (qui est du sucre syntaxique enrobant un thread)
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci ! Effectivement, je suis passé par la classe AsyncTask pour obtenir le bon résultat, et ça marche bien mieux !

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

Discussions similaires

  1. [SpringSecurity] Refuser l'accès sur une url inconnue
    Par Invité dans le forum Spring Web
    Réponses: 2
    Dernier message: 28/10/2008, 12h14
  2. Restriction d'accès sur une URL Spécifique
    Par elspliffo dans le forum Apache
    Réponses: 1
    Dernier message: 16/10/2007, 10h57
  3. Interdire acces a une URL
    Par STB_Fk dans le forum Langage
    Réponses: 2
    Dernier message: 16/01/2007, 16h12
  4. [VB.Net] Comment lire une url depuis un fichier .ini ?
    Par lewebdalex dans le forum VB.NET
    Réponses: 7
    Dernier message: 06/05/2006, 20h32
  5. [MySQL 5.0 InnoDB] Appeler une url depuis une ps
    Par Johan31 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 04/11/2004, 14h00

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