Как добавить разрешение манифеста в приложение?

Я пытаюсь получить доступ к HTTP-ссылке с помощью HttpURLConnection В Android для загрузки файла, но я получаю это предупреждение в LogCat:

предупредить/системы.err (223): java.сеть.SocketException: разрешение отказано (возможно, отсутствует разрешение интернета)

я добавил android.Декларация.разрешение на мое приложение, но его все еще дает то же исключение.

9 ответов


Если вы не имеют разрешения от LogCat описание ошибки, вот мое содержимое для моего AndroidMainfest.xml файл, который имеет доступ к интернету:

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

кроме этого, вы должны быть в порядке, чтобы загрузить файл из интернета.


в случае, если кто-то будет бороться с той же проблемой чувствительно к регистру заявление, поэтому неправильный случай означает, что ваше приложение не получит разрешения.

неправильно

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

правильно

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

эта проблема может произойти ie. на автозаполнение в IDE


если вы используете плагин Eclipse ADT для своей разработки, откройте AndroidManifest.xml в Редакторе Манифеста Android (должно быть действие по умолчанию для открытия AndroidManifest.xml из списка файлов проекта).

затем выберите Permissions вкладка в нижней части редактора (Manifest - Application - Permissions - Instrumentation - AndroidManifest.xml), затем нажмите кнопку Add... a Uses Permission и выберите нужное разрешение из списка справа, или просто скопируйте и вставьте в нужную (например,android.permission.INTERNET разрешение требуется).


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

скопируйте следующую строку в файл манифеста приложения и вставьте перед <application> тег.

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

размещение разрешения ниже <application/> тег будет работать, но даст вам предупреждение. Поэтому позаботьтесь о том, чтобы поместить его перед <application/> декларации теге.


при использовании eclipse выполните следующие действия

1) дважды щелкните манифест, чтобы показать его в Редакторе
2) Перейдите на вкладку разрешения под редактором манифеста
3) Нажмите на кнопку Add
4)в появившемся диалоговом окне нажмите кнопку использует разрешение. (Обычно последний пункт в списке)
5) Обратите внимание на вид, который появляется на стороне rigth выберите " android.разрешение.Интернет"
6) затем серия Ok и, наконец, сохранить.

Надеюсь, это помогает


просто добавьте это в свой манифест android:

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

Это также может быть интересно в контексте добавления интернет-разрешения в ваше приложение:

Google также дал каждому приложению доступ в интернет, эффективно удалив разрешение на доступ в интернет. О, конечно, разработчики Android все еще должны объявить, что они хотят доступ в интернет при сборке приложения. Но пользователи больше не могут видеть разрешение на доступ в интернет при установке приложения, а текущие приложения, у которых нет доступа в Интернет, теперь могут получить доступ в интернет с автоматическим обновлением без запроса.

источник: http://www.howtogeek.com/190863/androids-app-permissions-were-just-simplified-now-theyre-much-less-secure/

суть в том, что вам все равно нужно добавить разрешение интернета в файл манифеста, но приложение будет обновлено на устройствах пользователя, не запрашивая у них новое разрешение.


Я опаздываю, но я хочу завершить ответ.

разрешение добавляется в 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'
}