Je reçois l'exception suivante lors de l'exécution de mon application:
Java.net.SocketException: Permission denied (maybe missing INTERNET permission)
Comment résoudre le problème de permission manquant?
Mise à jour:
Google a supprimé la nécessité de demander l’autorisation d’Internet pour la dernière version de Google Play.
Ajoutez l’autorisation [INTERNET] [1] à votre fichier manifeste.
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
Dans la dernière version de Google Play, Google supprimait le besoin de demander la permission pour Internet car "la plupart des applications en ont besoin de toute façon". Cependant, pour les utilisateurs ayant 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 au dessus de la ligne 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 et vérifier l'état du réseau, c'est-à-dire si l'application est connectée à Internet, vous devez utiliser le code ci-dessous en dehors de la balise application
.
Pour une autorisation 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 alors use-
<uses-permission Android:name="Android.permission.INTERNET" />
si vous obtenez l'état d'Internet, utilisez également -
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
juste au-dessus de la balise d'application.
oublier d'ajouter la permission dans le manifeste Ajouter ce code en tant que 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 Main
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 le code ci-dessous 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 Internet, mais vous pouvez ajouter le code ci-dessous, qui aidera les utilisateurs de versions plus anciennes. Ajoutez-les simplement dans AndroidManifest
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>
Utilisez ceux-ci:
<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 une autorisation Internet dans votre code, vous devez les ajouter à votre fichier AndroidManifest.xml.
<uses-permission Android:name="Android.permission.INTERNET" />
Pour plus d'explications détaillées goto https://developer.Android.com/training/basics/network-ops/connecting
Google a supprimé la nécessité de demander l'autorisation d'Internet pour la dernière version. Néanmoins, pour demander une autorisation Internet dans votre code, vous devez les ajouter à votre fichier AndroidManifest.xml.
<uses-permission Android:name="Android.permission.INTERNET"/>