애플리케이션에 매니페스트 권한을 추가하는 방법은 무엇입니까?


428

HttpURLConnection파일을 다운로드하기 위해 Android에서 HTTP 링크에 액세스하려고하는데 다음과 같은 경고 메시지가 나타납니다 LogCat.

WARN / System.err (223) : java.net.SocketException : 권한 거부 (인터넷 권한이 없을 수 있음)

android.Manifest.permission내 응용 프로그램에 추가 했지만 여전히 동일한 예외가 발생합니다.


매니페스트 권한 콘텐츠를 붙여넣고 인터넷에 대한 권한을 부여 했습니까?
Anthony Forloney

import android.Manifest.permission을 추가했습니다. 다른 앱은 없습니다. 권한을 부여하기 위해 추가해야 할 사항
rob

2
아래 답변을보고 도움이되는지 확인하십시오 import android.Manifest.permission. AndroidManifest.xml 파일에 인터넷 권한이 설정되어 있지 않은 경우 어떻게해야할지
모르겠습니다.

답변:


935

LogCat오류 설명 에서 권한이 설정되지 않았다고 가정하면 AndroidManifest.xml인터넷에 액세스 할 수있는 내 파일의 내용은 다음과 같습니다.

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

그 외에는 인터넷에서 파일을 다운로드해도됩니다.


3
질문을 해결하거나 도움이되는 것처럼 보이는 답변을 찾은 경우 "답변"및 / 또는 찬성 투표로 선택하면 도움이되며 동일한 문제가 발생하는 모든 사람에게 커뮤니티를 지원합니다. 그것은 단지이 질문에 관한 것이 아니라 당신이 또한 질문 한 다른 질문들
Anthony Forloney

나는 그것에 대해 몰랐다, 이것이 내 문제를 해결할 수 있는지 확실히 할 것입니다
rob

다른 문제가 발생하면 다시 신고 해 주시면 기꺼이 도와 드리겠습니다.
Anthony Forloney

1
내 경우에는 매니페스트 문 다음에 VERY FIRST 줄인지 확인해야했습니다. 그 아래에 있으면 작동하지 않습니다. v2.2, API 레벨 8, HTC G1
SLF

1
@dialex AFAIK, 태그 uses-permission내부 에는 하위 요소가 없으며 . applicationmanifest
Anthony Forloney

73

권한 이름은 CASE-SENSITIVE입니다.

누군가가 같은 문제로 어려움을 겪을 경우 대소 문자를 구분 하므로 진술이 잘못되면 응용 프로그램에 권한이 부여되지 않습니다.

잘못된

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

옳은

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

이 문제는 발생할 수 있습니다. IDE에서 자동 완성시


1
감사합니다! 내 앱이 작동하지 않는 이유에 대해 하루 종일 낭비했습니다. 나는 안드로이드 스튜디오에 새로운 오전이 문제는 :) 전에 이클립스 발생하지 않았다
InspiredCoder

1
그리고 사실, OMG는 그들 사이의 차이의 의미를 알아내는 나의 하루 낭비 자본작은 ANDROID.PERMISSIONandroid.permissionP :)
fWd82


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

34

개발에 Eclipse ADT 플러그인을 사용하는 경우 AndroidManifest.xmlAndroid Manifest Editor AndroidManifest.xml에서여십시오 (프로젝트 파일 목록에서 여는 기본 조치 여야 함 ).

그런 다음 Permissions편집기 하단의 탭 ( Manifest - Application - Permissions - Instrumentation - AndroidManifest.xml)을 선택한 다음 Add...a 를 클릭 Uses Permission하고 오른쪽의 드롭 다운에서 원하는 권한을 선택하거나 필요한 권한 (예 : android.permission.INTERNET필요한 권한)을 복사하여 붙여 넣기 만하면 됩니다.


23

다음 줄을 응용 프로그램 매니페스트 파일에 복사하고 <application> 태그 앞에 붙여 넣습니다 .

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

<application/>태그 아래에 권한을 설정 하면 작동하지만 경고가 표시됩니다. 따라서 <application/>태그 선언 앞에 배치하십시오 .


이 주석을 작성할 때 주석은 응용 프로그램 요소 외부 이지만 매니페스트 내에 있습니다. 예 : <application> ... </ application> <uses-permission android : name = "android.permission.INTERNET"/> </ manifest>
Steve Swinsburg

12

일식을 사용할 때 다음 단계를 따르십시오

1) 매니페스트를 두 번 클릭하여 편집기에 표시합니다.
2) 매니페스트 편집기 아래의 사용 권한 탭을 클릭합니다.
3) 추가
대화 상자를 클릭합니다. 4) 나타나는 대화 상자에서 사용 권한을 클릭합니다. (보통 목록의 마지막 항목)
5) 리그 측에 나타나는보기를 확인하십시오. "android.permission.INTERNET"을 선택하십시오.
6) 그런 다음 일련의 확인을 누르고 마지막으로 저장하십시오.

도움이 되었기를 바랍니다


7

늦었지만 답변을 완료하고 싶습니다.

권한에 추가됩니다 manifest.xml같은

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

사용자에게 권한이 표시되지 않는 표준 권한에 충분합니다 . 그러나 위험한 권한 인 경우에만 표시 할 권한 만 추가하는 것만으로는 충분하지 않습니다. 안드로이드 문서를 참조하십시오 . 카메라와 마찬가지로 저장 권한.

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

사용자 에게 권한요청 해야합니다 . 내가 사용 RxPermission에 널리 허가를 요청하기위한 라이브러리를 사용하는 라이브러리를. 우리가 허락을 구하기 위해 작성해야하는 긴 코드이기 때문입니다.

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

이 라이브러리를 앱에 추가

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

응용 프로그램에 인터넷 권한을 추가하는 것과 관련하여 흥미로울 수도 있습니다.

Google은 또한 각 앱에 인터넷 액세스 권한을 부여하여 인터넷 액세스 권한을 효과적으로 제거했습니다. 물론 Android 개발자는 앱을 만들 때 인터넷 액세스를 원한다고 선언해야합니다. 그러나 앱을 설치할 때 사용자는 더 이상 인터넷 액세스 권한을 볼 수 없으며 인터넷에 액세스 할 수없는 현재 앱은 프롬프트없이 자동 업데이트로 인터넷에 액세스 할 수 있습니다.

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

결론은 여전히 ​​매니페스트 파일에 인터넷 권한을 추가해야하지만 응용 프로그램은 새로운 권한을 요구하지 않고 사용자의 장치에서 업데이트됩니다.


-1

안드로이드 에뮬레이터를 통해 인터넷에로드하거나 액세스하려는 동안 매니페스트 파일에서 네트워크 및 액세스 네트워크 상태를 모두 사용해야합니다.

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

.INTERNET 권한 만 부여하면 인터넷에 액세스 할 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.