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

我试图在Android中使用HttpURLConnection访问HTTP链接下载文件,但我在LogCat中得到这个警告:

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

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

934909 次浏览

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

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

除此之外,你应该可以从网上下载一个文件。

如果您正在使用Eclipse ADT插件进行开发,请在Android清单编辑器中打开AndroidManifest.xml(应从项目文件列表中打开AndroidManifest.xml的默认操作)。

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

在使用eclipse时,遵循以下步骤

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

希望这能有所帮助

<?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/>标记声明之前。

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

谷歌还授予了每个应用程序上网权限,实际上是取消了上网权限。当然,Android开发者在制作应用程序时仍然需要声明他们想要上网。但用户在安装应用程序时不再可以看到上网权限,当前无法上网的应用程序现在可以通过自动更新获得上网权限,而无需提示。

来源:# EYZ0

底线是你仍然需要在清单文件中添加INTERNET权限,但应用程序将在用户的设备上更新,而不需要他们申请新的权限。

权限名称区分大小写

以防有人遇到同样的问题,它是区分大小写的语句,所以错误的情况意味着你的应用程序将无法获得权限。

错误的

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

正确的

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

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

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

manifest.xml中添加了一个权限

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

这对于标准的权限已经足够了,其中没有提示用户权限。但是,如果它是一个危险的权限,仅为显化添加权限是不够的。看到# EYZ1。像相机,存储权限。

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

您需要ask permission from user .。我使用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'
}

当你试图通过android模拟器加载或访问互联网时,你必须在清单文件中使用网络和访问网络状态。

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

如果你只给。internet权限,它将不能访问互联网。

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

 android:usesCleartextTraffic="true"

如下代码所示:

<application
....
android:usesCleartextTraffic="true"
....>

并在application上面添加下面的标签

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

像那样:

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

用于颤振开发者。

android / app /主/ AndroidManifest.xml

外的

应用程序标记

但是在

清单标签

添加

# EYZ0

如果您正在使用Android Studio,请将鼠标悬停在需要权限的代码上,然后单击“添加权限.." 添加权限.."

enter image description here

然后你可以用git检查AndroidManifest.xml中的变化。

**用于活动识别,如脚踏计数器

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

**适用于互联网

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

**用于拨打电话

<uses-permission android:name="android.permission.CALL_PHONE" />
[![enter image description here][1]][1]