Как добавить манифест разрешения для приложения? - PullRequest
380 голосов
/ 30 января 2010

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

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

Я добавил android.Manifest.permission в свое приложение, но оно все еще дает то же исключение.

Ответы [ 9 ]

836 голосов
/ 30 января 2010

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

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

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

57 голосов
/ 14 мая 2015

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

НЕВЕРНО

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

ПРАВИЛЬНО

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

Эта проблема может возникнуть, т.е. при автозаполнении в IDE

34 голосов
/ 06 апреля 2010

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

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

32 голосов
/ 04 декабря 2013
<?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>
22 голосов
/ 04 декабря 2013

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

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

Размещение разрешения под тегом <application/> будет работать, но предупредит вас. Поэтому постарайтесь поместить его до объявления тега <application/>.

12 голосов
/ 01 августа 2012

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

1) Дважды щелкните манифест, чтобы отобразить его в редакторе
2) Нажмите на вкладку разрешений под редактором манифеста
3) Нажмите на кнопку Добавить
4) в появившемся диалоговом окне Click использует разрешение. (Обычно последний элемент в списке)
5) Обратите внимание на вид, который появляется на правой стороне. Выберите «android.permission.INTERNET»
6) Затем серия Ok и, наконец, сохранить.

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

7 голосов
/ 18 февраля 2014

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

<uses-permission android:name="android.permission.INTERNET"/>
4 голосов
/ 28 июля 2014

Это может быть также интересно в контексте добавления разрешения ИНТЕРНЕТ к вашему приложению:

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

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

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

3 голосов
/ 10 июля 2018

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

Разрешение добавлено в manifest.xml как

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

Этого достаточно для стандартных разрешений , когда пользователю не запрашивается разрешение. Однако недостаточно добавить разрешение только для манифеста, если это опасное разрешение. См. документ для Android . Как камера, разрешения на хранение.

<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'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...