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 ?
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 ?
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
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);
}
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 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.