629 votes

De quelle autorisation ai-je besoin pour accéder à Internet à partir d'une application Android ?

J'obtiens l'exception suivante en exécutant mon application :

java.net.SocketException: Permission denied (maybe missing INTERNET permission)

Comment résoudre le problème des autorisations manquantes ?

1324voto

Nikola Smiljanić Points 15585

Ajouter le INTERNET à votre fichier manifeste.

Vous devez ajouter cette ligne :

<uses-permission android:name="android.permission.INTERNET" /> 

en dehors de la application dans votre AndroidManifest.xml.

58 votes

Cette étiquette doit être placée AVANT l'étiquette d'application. Si vous mettez if après l'aplication TAG, cela produit un avertissement.

3 votes

Redémarrez l'émulateur (cela a été nécessaire pour moi avant que cela ne prenne effet).

1 votes

J'ai un problème. Je ne veux pas d'accès à internet pour mon apk. Aucune permission n'a été ajoutée au manifeste, mais si j'essaie d'installer l'apk, l'installation m'informe que l'apk nécessite un accès complet à Internet. Comment résoudre ce problème ? aucune permission n'a été ajoutée au manifeste. Mon apk n'a pas besoin d'un accès complet à Internet - je veux désactiver cette permission.

122voto

epicfinley Points 79

Dans la dernière version de Google Play, Google a supprimé la nécessité de demander l'autorisation pour l'Internet car "la plupart des applications en ont besoin de toute façon de nos jours". Cependant, pour les utilisateurs qui ont des versions plus anciennes, il est toujours recommandé de laisser le code ci-dessous dans votre manifeste

<uses-permission android:name="android.permission.INTERNET" />

2 votes

Une référence à un document Google où cela est indiqué ?

0 votes

@farindk la première section de note ici : support.google.com/googleplay/answer/6014972?hl=fr

27 votes

Le document dont vous donnez le lien explique que le Play Store n'inclura pas l'autorisation Internet dans la liste principale des autorisations qu'il affiche à l'utilisateur lorsqu'il lui demande s'il peut installer une application. Il s'agit de n'a pas disent qu'une application qui utilise l'internet n'a plus besoin de déclarer qu'elle le fait dans la liste des permissions utilisées de son manifeste. Voulez-vous dire que todo applications implicitement utilisent l'Internet sans le dire dans leurs manifestes ? En d'autres termes, si Janusz a exécuté la même application à partir de la question en d'aujourd'hui téléphones, il faudrait pas aurait échoué comme il l'a fait lorsque la question a été posée ?

82voto

kirti avaiya Points 991

Il suffit de mettre la ligne ci-dessus comme ci-dessous

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.avocats.activeavocats"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="16" />

 <uses-permission android:name="android.permission.INTERNET" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name="com.example.exp.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

46voto

BadLuckBrian Points 1965
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

0 votes

Connaissez-vous d'autres autorisations qui pourraient être nécessaires pour permettre l'authentification NTLM/Windows ? Surtout dans un environnement XenMobile... je lance juste une fléchette ici...

14voto

Amy Points 3394

Si vous voulez utiliser Internet dans votre application et vérifier l'état du réseau, c'est-à-dire savoir si l'application est connectée à Internet, vous devez utiliser le code ci-dessous en dehors de l'application application étiquette.

Pour l'autorisation d'Internet :

<uses-permission android:name="android.permission.INTERNET" />

Pour l'état du réseau d'accès :

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Code complet :

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="16" />

 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X