J'essaie d'accéder au lien HTTP en utilisant HttpURLConnection
dans Android pour télécharger un fichier, mais cet avertissement apparaît dans LogCat
:
WARN/System.err (223): Java.net.SocketException: autorisation refusée (peut-être que l'autorisation INTERNET est manquante)
J'ai ajouté Android.Manifest.permission
à mon application, mais il continue à donner la même exception.
En supposant que vous ne disposez pas des autorisations définies dans votre description d'erreur LogCat
, voici mon contenu pour mon fichier AndroidManifest.xml
ayant accès à Internet:
<manifest xlmns:Android...>
...
<uses-permission Android:name="Android.permission.INTERNET" />
<application ...
</manifest>
Autre que cela, vous devriez être en mesure de télécharger un fichier à partir d'Internet.
Dans le cas où quelqu'un aurait du mal à résoudre le même problème, il est sensible à la casse, ainsi, un cas erroné signifie que votre application ne recevra pas la permission.
FAUX
<uses-permission Android:name="Android.PERMISSION.INTERNET" />
CORRECT
<uses-permission Android:name="Android.permission.INTERNET" />
Ce problème peut arriver, par exemple. sur autocomplete dans IDE
Si vous utilisez le plug-in Eclipse ADT pour votre développement, ouvrez AndroidManifest.xml
dans l'éditeur de manifestes Android (cette action doit être l'action par défaut pour ouvrir AndroidManifest.xml
à partir de la liste des fichiers du projet).
Ensuite, sélectionnez l'onglet Permissions
au bas de l'éditeur (Manifest - Application - Permissions - Instrumentation - AndroidManifest.xml
), puis cliquez sur Add...
a Uses Permission
et sélectionnez l'autorisation souhaitée dans le menu déroulant situé à droite, ou Il suffit de copier-coller dans le fichier nécessaire (tel que la permission Android.permission.INTERNET
requise).
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.photoeffect"
Android:versionCode="1"
Android:versionName="1.0" >
<uses-sdk
Android:minSdkVersion="8"
Android:targetSdkVersion="18" />
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission Android:name="com.example.towntour.permission.MAPS_RECEIVE" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
<uses-permission Android:name="Android.permission.CALL_PHONE" />
<uses-permission Android:name="Android.permission.READ_PHONE_STATE" />
<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES" />
<application
Android:allowBackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@Android:style/Theme.Black.NoTitleBar" >
<activity
Android:name="com.photoeffect.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>
</manifest>
Copiez la ligne suivante dans le fichier manifeste de votre application et collez-la avant la balise <application>
.
<uses-permission Android:name="Android.permission.INTERNET"/>
Placer la permission sous la balise <application/>
fonctionnera, mais vous avertira. Veillez donc à le placer avant la déclaration de la balise <application/>
.
Lorsque vous utilisez Eclipse, procédez comme suit
1) Double-cliquez sur le manifeste pour l'afficher dans l'éditeur.
2) Cliquez sur l'onglet autorisations sous l'éditeur de manifeste.
3) Cliquez sur le bouton Ajouter
4) dans la boîte de dialogue qui apparaît Cliquez sur utilise l'autorisation. (Habituellement le dernier élément de la liste)
5) Remarquez la vue qui apparaît du côté droit Sélectionnez "Android.permission.INTERNET"
6) Ensuite, une série de Ok et enfin enregistrer.
J'espère que cela t'aides
Ajoutez simplement ceci à votre manifeste Android:
<uses-permission Android:name="Android.permission.INTERNET"/>
Je suis en retard mais je veux compléter la réponse.
Une permission est ajoutée dans manifest.xml
comme
<uses-permission Android:name="Android.permission.INTERNET"/>
Cela suffit pour autorisations standard où aucune autorisation n'est demandée à l'utilisateur. Cependant, il ne suffit pas d'ajouter une autorisation uniquement pour manifester s'il s'agit d'une autorisation dangereuse. Voir doc Android . Comme caméra, autorisations de stockage.
<uses-permission Android:name="Android.permission.CAMERA"/>
Vous devrez demander la permission à l'utilisateur . J'utilise la bibliothèque RxPermission qui est une bibliothèque largement utilisée pour demander l'autorisation. Parce que c'est un code long que nous devons écrire pour demander la permission.
RxPermissions rxPermissions = new RxPermissions(this); // where this is an Activity instance // Must be done during an initialization phase like onCreate
rxPermissions
.request(Manifest.permission.CAMERA)
.subscribe(granted -> {
if (granted) { // Always true pre-M
// I can control the camera now
} else {
// Oups permission denied
}
});
Ajouter cette bibliothèque à votre application
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.tbruyelle:rxpermissions:0.10.1'
implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
}
Cela peut également être intéressant dans le contexte de l’ajout d’une autorisation INTERNET à votre application:
Google a également donné à chaque application un accès Internet, supprimant ainsi l'autorisation d'accès à Internet. Oh, bien sûr, Android, les développeurs doivent encore déclarer vouloir accéder à Internet lors de la création de l'application. Mais les utilisateurs ne peuvent plus voir l'autorisation d'accès Internet lors de l'installation d'une application et les applications actuelles qui n'ont pas accès à Internet peuvent désormais accéder à Internet avec une mise à jour automatique sans vous y inviter.
En bout de ligne, vous devez toujours ajouter une autorisation INTERNET dans le fichier manifeste, mais l'application sera mise à jour sur les périphériques de l'utilisateur sans lui demander une nouvelle autorisation.