De quelle autorisation ai-je besoin pour accéder à Internet à partir d'une application android?
Je reçois l'Exception suivante exécutant mon application:
java.net.SocketException: Permission denied (maybe missing INTERNET permission)
Comment résoudre le problème d'autorisation manquant?
11 réponses
Dans la dernière version de Google Play, Google a supprimé la nécessité de demander la permission pour internet comme "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" />
Ajoutez l'autorisation INTERNET à 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
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 voulez utiliser Internet dans votre application et vérifier l'état du réseau, c'est-à-dire que L'application est connectée à internet, vous devez utiliser le code ci-dessous en dehors de la balise application
.
Pour L'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 vous utilisez simplement internet, Utilisez-
<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.
Oubliez d'ajouter l'autorisation 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 écrire 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 utilisant des versions plus anciennes Il suffit d'ajouter ces dans AndroidManifest
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Utilisez ces éléments:
<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 l'autorisation d'internet dans votre code, vous devez les ajouter à votre AndroidManifest.fichier 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