错误消息“java.net.SocketException:套接字失败:EACCES(权限被拒绝)”
Posted
技术标签:
【中文标题】错误消息“java.net.SocketException:套接字失败:EACCES(权限被拒绝)”【英文标题】:Error message 'java.net.SocketException: socket failed: EACCES (Permission denied)' 【发布时间】:2012-07-01 15:48:33 【问题描述】:我收到错误消息
java.net.SocketException:套接字失败:EACCES(权限被拒绝)
当我尝试应用下面的代码时。这是我调用的函数并给了我这个异常。
public void run()
// TODO Auto-generated method stub
URL myurl = null;
try
myurl = new URL("http://10.0.2.2/list.JSON");
catch (MalformedURLException e)
// TODO Auto-generated catch block
e.printStackTrace();
try
URLConnection myconn = myurl.openConnection();
InputStream in = new BufferedInputStream(myconn.getInputStream());
InputStreamReader reader = new InputStreamReader(in);
BufferedReader br = new BufferedReader(reader);
String line;
StringBuilder sb = new StringBuilder();
while ((line=br.readLine()) != null)
sb.append(line);
//Toast.makeText(getApplicationContext(), "I enter here", Toast.LENGTH_LONG).show();
jsoncode = sb.toString();
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
threading = true;
super.run();
LogCat:
06-30 11:33:21.457: W/System.err(619): java.net.SocketException: socket failed: EACCES (Permission denied)
06-30 11:33:21.467: W/System.err(619): at libcore.io.IoBridge.socket(IoBridge.java:573)
06-30 11:33:21.467: W/System.err(619): at java.net.PlainSocketImpl.create(PlainSocketImpl.java:201)
06-30 11:33:21.479: W/System.err(619): at java.net.Socket.checkOpenAndCreate(Socket.java:663)
06-30 11:33:21.479: W/System.err(619): at java.net.Socket.connect(Socket.java:807)
06-30 11:33:21.479: W/System.err(619): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:77)
06-30 11:33:21.479: W/System.err(619): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
06-30 11:33:21.479: W/System.err(619): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
06-30 11:33:21.479: W/System.err(619): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
06-30 11:33:21.479: W/System.err(619): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
06-30 11:33:21.487: W/System.err(619): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
06-30 11:33:21.487: W/System.err(619): at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
06-30 11:33:21.497: W/System.err(619): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
06-30 11:33:21.497: W/System.err(619): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
06-30 11:33:21.497: W/System.err(619): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
06-30 11:33:21.497: W/System.err(619): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
06-30 11:33:21.497: W/System.err(619): at com.apk.PItestActivity$connection.run(PItestActivity.java:190)
06-30 11:33:21.507: W/System.err(619): Caused by: libcore.io.ErrnoException: socket failed: EACCES (Permission denied)
06-30 11:33:21.517: W/System.err(619): at libcore.io.Posix.socket(Native Method)
06-30 11:33:21.517: W/System.err(619): at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:169)
06-30 11:33:21.527: W/System.err(619): at libcore.io.IoBridge.socket(IoBridge.java:558)
06-30 11:33:21.527: W/System.err(619): ... 15 more
这是我的清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.apk"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="14" />
<permission android:name="android.permission.INTERNET"></permission>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".PItestActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="addfriend"></activity>
<activity android:name="updateDetails"></activity>
<activity android:name="Details"></activity>
<activity android:name="updateimage"></activity>
</application>
</manifest>
我该如何解决这个问题?
【问题讨论】:
你是用设备还是模拟器检查? 【参考方案1】:试试看,
<uses-permission android:name="android.permission.INTERNET"/>
而不是,
<permission android:name="android.permission.INTERNET"></permission>
【讨论】:
+1。此外,尽管这与实际问题无关,但是:不要忘记在进行此更改后安装 right apk...我通过保留另一个副本来欺骗自己.apk 在一个不同的目录中,在从那里安装之前忘记用新目录覆盖它。 截至 2013 年 11 月为我工作。使用 eclipse,您可以使用具有权限选项卡的精美编辑器编辑 AndroidManifest.xml。添加使用权限并从下拉菜单中选择此权限。 重要 - uses-permission 标签需要在清单文件中的 application 标签之前。至少这对我来说是固定的..【参考方案2】:试试这个:
<uses-permission android:name="android.permission.INTERNET"/>
你的activity names
必须和capital letters
一样:
<activity android:name=".Addfriend"/>
<activity android:name=".UpdateDetails"/>
<activity android:name=".Details"/>
<activity android:name=".Updateimage"/>
【讨论】:
- 如果您在回答中有其他信息,则仅在您与已回答的内容相同时才发布,然后支持该答案。 @user370305 对不起,你的意思是他应该只发布附加信息吗?不是本地人,我不明白你的意思,但我想了解元数据。【参考方案3】:试试看。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
【讨论】:
如果有人还在想把这些放在哪里:你可以把它们放在 manifests/AndroidManifest.xml 中,在 之前 【参考方案4】:尝试将<uses-permission>
移到<application>
标记之外。
【讨论】:
【参考方案5】:在设备上卸载应用程序,然后重新安装为我修复了它。
尝试了所有其他选项,没有。终于找到this post。这是在添加权限(如下)和清理构建之后。
<uses-permission android:name="android.permission.INTERNET"/>
【讨论】:
【参考方案6】:可以通过在android清单文件中放置几行来修复:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
enter image description here
【讨论】:
欢迎您!请注意policy 就是questions and answers need to be in English。【参考方案7】:如果您使用模拟器进行测试,那么您必须使用 <uses-permission android:name="android.permission.INTERNET" />
only 并忽略 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
。这对我有用。
【讨论】:
【参考方案8】:将这些源代码添加到您的 Java 文件中,如下所示:
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
【讨论】:
这不是这个关于清单中缺少权限的问题的答案。这是一个非常糟糕的答案,即NetworkOnMainThreadException
。【参考方案9】:
你可能需要做 AndroidStudio - Build - Clean
如果您通过文件系统或 Git 更新清单,它不会接收更改。
【讨论】:
以上是关于错误消息“java.net.SocketException:套接字失败:EACCES(权限被拒绝)”的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 weasyprint 错误消息 gobject-2.0-0 错误 0x7e 消息?
如何在spring mvc 3.0中的同一jsp中显示运行时错误消息或sql错误消息