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

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

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


当前回答

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

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

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

其他回答

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

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

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

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

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

权限名称区分大小写

为了防止别人遇到同样的问题,这是区分大小写的语句,所以错误的大小写意味着你的应用程序将无法获得许可。

错误的

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

正确的

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

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

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

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

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

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

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

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

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