![](/img/trans.png)
[英]java.net.SocketException: socket failed: EACCES (Permission denied)
[英]Error message 'java.net.SocketException: socket failed: EACCES (Permission denied)'
我收到錯誤消息
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();
}
日志貓:
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>
我該如何解決這個問題?
試試看,
<uses-permission android:name="android.permission.INTERNET"/>
代替,
<permission android:name="android.permission.INTERNET"></permission>
試試這個:
<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"/>
嘗試一下。
<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" />
嘗試將<uses-permission>
移到<uses-permission>
<application>
標簽之外。
卸載設備上的應用程序,然后重新安裝為我修復了它。
嘗試了所有其他選項,什么都沒有。 終於找到這個帖子了。 這是在添加權限(如下)和清理構建之后。
<uses-permission android:name="android.permission.INTERNET"/>
可以通過在 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" />
將這些源代碼添加到您的 Java 文件中,如下所示:
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
你可能需要做 AndroidStudio - Build - Clean
如果您通過文件系統或 Git 更新清單,它不會獲取更改。
如果您使用模擬器進行測試,那么您必須僅使用<uses-permission android:name="android.permission.INTERNET" />
並忽略<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
。這對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.