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 ?

7voto

Akshay Paliwal Points 2114

Si vous n'utilisez que l'internet, utilisez

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

si vous obtenez l'état de l'internet alors utilisez aussi -

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

juste au-dessus de la balise d'application.

7voto

Jedsada Saengow Points 61

J'ai eu le même problème même en utilisant <uses-permission android:name="android.permission.INTERNET" />

Si vous voulez connecter l'api web en utilisant http pas https . Peut-être que vous utilisez un appareil Android utilisant Android 9 (Pie) ou le niveau d'API 28 ou supérieur . android:usesCleartextTraffic La valeur par défaut est false . Vous devez être

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:usesCleartextTraffic="true" <!-- this line -->
        ...>
           ...
    </application>
</manifest>

Enfin, devrait être https

https://developer.Android.com/guide/topics/manifest/application-element#usesCleartextTraffic

6voto

Utilisez ça :

<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" />

5voto

Vaibhav Joshi Points 117

Oublier d'ajouter la permission dans le manifeste Ajouter 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 écrivez ceci 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);
    }

4voto

AG-Developer Points 172

Ajoutez juste ces 2 permissions

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

dans l'application AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.android.networkusage"
        ...>

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

        <application 
            ...>
            ...
        </application>
    </manifest>

Bon codage :)

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