Hoe manifest toestemming toe te voegen aan een aanvraag?

Ik probeer toegang te krijgen tot HTTP-link met HttpURLConnectionin Android om een ​​bestand te downloaden, maar ik krijg deze waarschuwing in LogCat:

Warn / System.err (223): Java.net.SocketException: toestemming geweigerd (Misschien ontbreekt Internet-toestemming)

Ik heb android.Manifest.permissiontoegevoegd aan mijn applicatie, maar het geeft nog steeds dezelfde uitzondering.


Antwoord 1, Autoriteit 100%

Aangenomen dat u geen machtigingen hebt ingesteld in uw LogCatFoutbeschrijving, hier is mijn inhoud voor mijn AndroidManifest.xmlbestand met toegang tot internet:

<manifest xlmns:android...>
 ...
 <uses-permission android:name="android.permission.INTERNET" />
 <application ...
</manifest>

anders dan dat, het gaat goed om een ​​bestand van internet te downloaden.


Antwoord 2, Autoriteit 8%

Machtigingsnaam is hoofdlettergevoelig

In het geval dat iemand met hetzelfde probleem zal worstelen, is het is hoofdlettergevoelig verklaring, dus de verkeerde behuizing betekent dat uw toepassing de toestemming niet krijgt.

verkeerde

<uses-permission android:name="ANDROID.PERMISSION.INTERNET" />

correct

<uses-permission android:name="ANDROID.PERMISSION.INTERNET" />

Dit probleem kan optreden. op autocomplete in IDE


Antwoord 3, Autoriteit 5%

<?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>

Antwoord 4, Autoriteit 3%

Als u de Eclipse ADT-plug-in gebruikt voor uw ontwikkeling, openen u AndroidManifest.xmlin de Android Manifest-editor (moet de standaardactie zijn voor het openen van AndroidManifest.xmlde lijst met projectbestanden).

Selecteer daarna het tabblad Permissionsonderaan de editor (Manifest - Application - Permissions - Instrumentation - AndroidManifest.xml) en klik vervolgens op Add...a Uses Permissionen selecteer de gewenste toestemming in de vervolgkeuzelijst aan de rechterkant, of kopieer en plak de benodigde toestemming (zoals de android.permission.INTERNETtoestemming die je nodig hebt).


Antwoord 5, autoriteit 2%

Kopieer de volgende regel naar het manifestbestand van uw toepassing en plak deze vóór de tag <application>.

<uses-permission android:name="android.permission.INTERNET"/>

Het plaatsen van de toestemming onder de <application/>tag zal werken, maar zal je waarschuwen. Plaats het dus vóór de <application/>-tagdeclaratie.


Antwoord 6

Als u eclipse gebruikt, volgt u deze stappen

1) Dubbelklik op het manifest om het in de editor te tonen
2) Klik op het tabblad machtigingen onder de manifesteditor
3) Klik op de knop Toevoegen
4) in het dialoogvenster dat verschijnt Klik gebruikt toestemming. (Meestal het laatste item op de lijst)
5) Let op de weergave die aan de rechterkant verschijnt Selecteer “android.permission.INTERNET”
6) Dan een reeks van Ok en tenslotte opslaan.

Ik hoop dat dit helpt


Antwoord 7

Ik ben te laat, maar ik wil het antwoord aanvullen.

Er is een machtiging toegevoegd in manifest.xmlzoals

<uses-permission android:name="android.permission.INTERNET"/>

Dit is voldoende voor standaardrechtenwaarvoor geen toestemming wordt gevraagd de gebruiker. Het is echter niet voldoende om alleen toestemming toe te voegen om te manifesteren als het een gevaarlijke toestemming is. Zie android-document. Zoals camera, opslagrechten.

<uses-permission android:name="android.permission.CAMERA"/>

Je moet toestemming vragen aan de gebruiker. Ik gebruik de RxPermission-bibliotheek, een veelgebruikte bibliotheek om toestemming te vragen. Omdat het een lange code is die we moeten schrijven om toestemming te vragen.

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

Voeg deze bibliotheek toe aan je app

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
dependencies {
    implementation 'com.github.tbruyelle:rxpermissions:0.10.1'
    implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
}

Antwoord 8

Dat kan ook interessant zijn in de context van het toevoegen van INTERNET-toestemming aan uw applicatie:

Google heeft elke app ook internettoegang gegeven, waardoor de toestemming voor internettoegang in feite is verwijderd. Oh, natuurlijk, Android-ontwikkelaars moeten nog steeds aangeven dat ze internettoegang willen bij het samenstellen van de app. Maar gebruikers kunnen de toestemming voor internettoegang niet langer zien wanneer ze een app installeren en huidige apps die geen internettoegang hebben, kunnen nu internettoegang krijgen met een automatische update zonder dat u hierom wordt gevraagd.

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

Waar het op neer komt is dat u nog steeds INTERNET-toestemming moet toevoegen aan het manifestbestand, maar de toepassing zal worden bijgewerkt op de apparaten van de gebruiker zonder hen om nieuwe toestemming te vragen.


Antwoord 9

Voeg de onderstaande regel toe aan uw toepassingstag:

android:usesCleartextTraffic="true"

Om eruit te zien als onderstaande code:

<application
    ....
    android:usesCleartextTraffic="true"
    ....>

En voeg de volgende tagstoe hierboven van application

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

om zo te zijn:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.themarona.app">
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:usesCleartextTraffic="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Antwoord 10

U moet zowel de netwerkstatus als de toegangsnetwerkstatus in het manifestbestand gebruiken terwijl u probeert te laden of toegang te krijgen tot internet via de Android-emulator.

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Als u alleen .INTERNET-toestemming geeft, heeft deze geen toegang tot internet.

Other episodes