Que dois-je la permission d'accéder à Internet à partir d'une application Android?

StackOverflow https://stackoverflow.com/questions/2378607

  •  24-09-2019
  •  | 
  •  

Question

Je reçois l'exception suivante mon application en cours d'exécution:

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

Comment puis-je résoudre le problème de l'autorisation manquante?

Était-ce utile?

La solution

Mise à jour: Google a retiré la nécessité de demander la permission de l'Internet pour la dernière version de Google Play.

  

Ajoutez l'autorisation à votre fichier manifest [INTERNET] [1].

     

Vous devez ajouter cette ligne:

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

en dehors de la balise d'application dans votre AndroidManifest.xml

     

[1]:    https://developer.android.com/training/basics/network-ops /connecting.html

Autres conseils

Dans la dernière version de Google Play, Google a retiré la nécessité de demander la permission d'Internet en tant que « la plupart des applications 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" /> 

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>

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

Si vous souhaitez utiliser Internet dans votre application ainsi que de vérifier l'état du réseau à savoir est-app est connecté à Internet, vous devez utiliser le code ci-dessous en dehors de la balise application.

Pour la permission 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>

si juste en utilisant Internet puis utilisez -

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

si vous obtenez l'état de l'utilisation d'Internet puis aussi -

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

juste au-dessus de la balise d'application.

oublier d'ajouter l'autorisation dans le manifeste Ajoutez ce code comme méthode

public static boolean hasPermissions(Context context, String... permissions)
{
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null)
    {
        for (String permission : permissions)
        {
            if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED)
            {
                return false;
            }
        }
    }
    return true;
}

et d'écrire dans votre principal

int PERMISSION_ALL = 1;
    String[] PERMISSIONS = {Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_SMS, Manifest.permission.CAMERA};

    if (!hasPermissions(this, PERMISSIONS)) {
        ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
    }

Il suffit de mettre ci-dessous le code dans AndroidManifest:

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

Selon les versions actuelles, Android ne demande pas la permission d'interagir avec l'Internet mais vous pouvez ajouter le code ci-dessous qui aidera pour les utilisateurs en utilisant les anciennes versions Il suffit de les ajouter dans AndroidManifest

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

Utilisez-les:

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

Pour demander la permission d'Internet dans votre code, vous devez ajouter à votre fichier AndroidManifest.xml

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

Pour des explications plus détaillées goto https://developer.android.com/ formation / bases / réseau d'habitation / connexion

Google supprimé la nécessité de demander la permission de l'Internet pour la dernière version. Pourtant, pour demander la permission d'Internet dans votre code, vous devez ajouter à votre fichier AndroidManifest.xml.

<uses-permission android:name="android.permission.INTERNET"/>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top