如何向应用程序添加清单权限?

rob*_*rob 402 android exception android-manifest

我试图HttpURLConnection在Android中使用HTTP链接来下载文件,但我收到此警告LogCat:

WARN/System.err(223):java.net.SocketException:权限被拒绝(可能缺少INTERNET权限)

我已将android.Manifest.permission添加到我的应用程序中,但它仍然提供相同的异常.

Ant*_*ney 875

假设您没有从LogCat错误描述中设置权限,这里是我的AndroidManifest.xml文件的内容,可以访问互联网:

<manifest xlmns:android...>
 ...
 <uses-permission android:name="android.permission.INTERNET" />
 <application ...
</manifest>
Run Code Online (Sandbox Code Playgroud)

除此之外,您可以从互联网上下载文件.

  • 如果您找到解决问题的答案或看起来有帮助,那么选择"已回答"和/或"赞成"非常有用,它可以帮助社区解决遇到相同问题的人.这不仅仅是针对这个问题,而是你提出的其他问题 (3认同)

Mar*_*era 62

如果有人会遇到同样的问题,那就是区分大小写的陈述,所以错误的情况意味着你的申请将无法获得许可.

错误

<uses-permission android:name="ANDROID.PERMISSION.INTERNET" />
Run Code Online (Sandbox Code Playgroud)

正确

<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)

这个问题可能会发生,即.在IDE中自动完成

  • 我浪费了一整天的时间来弄清楚它们之间的实际区别,天哪,它的 *Capital* 和 *Small* `ANDROID.PERMISSION` 和 `android.permission` ;) :p (3认同)
  • 文档:https://developer.android.com/training/basics/network-ops/connecting.html (2认同)

Rog*_*gus 34

如果您正在使用Eclipse ADT插件进行开发,请AndroidManifest.xml在Android Manifest Editor中打开(应该是AndroidManifest.xml从项目文件列表中打开的默认操作).

然后,选择Permissions编辑器底部的选项卡(Manifest - Application - Permissions - Instrumentation - AndroidManifest.xml),然后单击Add...a Uses Permission并从右侧的下拉列表中选择所需的权限,或者只需复制必要的android.permission.INTERNET权限(例如您需要的权限).


Ter*_*yur 34

<?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>
Run Code Online (Sandbox Code Playgroud)


Jus*_*koi 25

对于 Flutter 开发者来说。

android/app/main/AndroidManifest.xml

应用标签

但里面

清单标签

添加

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


nit*_*esh 22

将以下行复制到应用程序清单文件并粘贴到<application> 标记之前.

<uses-permission android:name="android.permission.INTERNET"/>
Run Code Online (Sandbox Code Playgroud)

将权限放在<application/>标记下面会有效,但会给你警告.因此,请务必将其放在<application/>标签声明之前.


Abd*_*leh 15

在您的应用程序标签中添加以下行:

 android:usesCleartextTraffic="true"
Run Code Online (Sandbox Code Playgroud)

看起来像下面的代码:

<application
    ....
    android:usesCleartextTraffic="true"
    ....>
Run Code Online (Sandbox Code Playgroud)

并在上面添加以下标签application

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)

像那样:

<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>
Run Code Online (Sandbox Code Playgroud)


小智 12

使用eclipse时,请按照以下步骤操作

1)双击清单以在编辑器上显示它
2)单击清单编辑器下方的权限选项卡
3)单击
出现的对话框上的添加按钮4)单击使用权限.(通常是列表中的最后一项)
5)注意出现在rigth侧的视图选择"android.permission.INTERNET"
6)然后一系列Ok,最后保存.

希望这可以帮助


Khe*_*raj 7

我迟到了,但我想完成答案。

一个权限被添加在manifest.xml

<uses-permission android:name="android.permission.INTERNET"/>
Run Code Online (Sandbox Code Playgroud)

这对于没有提示用户权限的标准权限来说已经足够了。但是,如果是危险权限,仅添加权限是不够的。请参阅android 文档。像相机,存储权限。

<uses-permission android:name="android.permission.CAMERA"/>
Run Code Online (Sandbox Code Playgroud)

您将需要征得用户的许可。我使用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
        }
    });
Run Code Online (Sandbox Code Playgroud)

将此库添加到您的应用

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

dependencies {
    implementation 'com.github.tbruyelle:rxpermissions:0.10.1'
    implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
}
Run Code Online (Sandbox Code Playgroud)