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


428

我正在尝试使用HttpURLConnectionAndroid中的HTTP链接来下载文件,但在以下情况下收到此警告LogCat

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

我已经添加android.Manifest.permission了我的应用程序,但是它仍然给出相同的例外。


粘贴清单权限内容,您是否授予INTERNET权限?
Anthony Forloney,2010年

我添加了导入android.Manifest.permission; 到应用程式,别无其他 我还需要添加什么才能授予权限
rob

2
看看下面我的回答看看是否有帮助,我不知道import android.Manifest.permission会为你做,如果你没有在AndroidManifest.xml文件INTERNET权限集
安东尼Forloney

Answers:


935

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

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

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


3
如果您找到解决问题的答案或对您有所帮助,则选择“已回答”和/或投票是很有用的,它可以为遇到相同问题的任何人提供帮助。那不仅是针对这个问题,而且您还问了其他问题
Anthony Forloney 2010年

我对此一无所知,我会确定这样做是否能解决我的问题
抢劫

如果您遇到任何不同的情况,请报告。我们非常乐意为您提供帮助。
Anthony Forloney 2010年

1
在我的情况下,我必须确保清单清单语句之后是非常第一行。v2.2,api级别8,htc g1
slf 2011年

1
@dialex AFAIK,标记uses-permission内没有子元素application,只有manifest
Anthony Forloney

73

权限名称区分大小写

万一有人遇到同样的问题,它是区分大小写的语句,所以错误的大小写意味着您的应用程序将不会获得许可。

错误

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

正确

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

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


1
谢谢!我浪费了整整一天,想知道为什么我的应用程序无法正常工作。我是Android Studio的新手,之前在Eclipse中未发生此问题:)
InspiredCoder

1
而且我浪费了整整一天的时间来弄清楚它们之间的实际区别是什么,OMG的CapitalSmall ANDROID.PERMISSIONandroid.permission;):p
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.xml在Android 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> ... </ application> <uses-permission android:name =“ android.permission.INTERNET” /> </ manifest>
Steve Swinsburg

12

使用Eclipse时,请按照下列步骤操作

1)双击清单以将其显示在编辑器上
2)单击清单编辑器下方的权限选项卡
3)单击添加按钮
4)在出现的对话框中单击使用权限。(通常是列表中的最后一项)
5)注意出现在右端的视图选择“ android.permission.INTERNET”
6)然后进行一系列确定,最后保存。

希望这可以帮助


7

我迟到了,但我想填写答案。

一个允许在加manifest.xml

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

这对于标准权限就足够了,在这种情况下不会提示用户任何权限。但是,仅添加显式权限是危险的权限,这还不够。参见android doc。像相机一样,具有存储权限。

<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

在向您的应用程序添加INTERNET权限的情况下,这也可能很有趣:

Google还为每个应用程序提供了Internet访问权限,从而有效地删除了Internet访问权限。哦,可以肯定的是,Android开发人员在组合该应用程序时仍必须声明要访问Internet。但是,用户在安装应用程序时将不再看到Internet访问权限,并且当前不具有Internet访问权限的应用程序现在可以通过自动更新获得Internet访问权限,而不会提示您。

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

最重要的是,您仍然必须在清单文件中添加INTERNET权限,但是应用程序将在用户设备上更新,而无需询问他们新的权限。


-1

尝试通过android模拟器加载或访问Internet时,必须在清单文件中同时使用“网络”和“访问网络状态”。

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

如果仅授予.INTERNET权限,则它将无法访问Internet。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.