web-dev-qa-db-fra.com

Comment ajouter la permission de manifeste à une application?

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.

386
rob

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.

853
Anthony Forloney

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

60
Marek Sebera

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).

34
Chris
<?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>
32
Teraiya Mayur

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

22
nitesh

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

12
Mathayo

Ajoutez simplement ceci à votre manifeste Android:

<uses-permission Android:name="Android.permission.INTERNET"/>
7
user2914699

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'
}
4
Khemraj

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.

Source: http://www.howtogeek.com/190863/androids-app-permissions-were-just-simplified-now-theyre-much-less-secure/

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.

4
lenrok258