最近在移动开发的时候遇到了java.net.SocketException: socket failed: EACCES (Permission denied),
但是我也在manifest中设置了联网权限<uses-permission android:name="android.permission.INTERNET" />
经过我的尝试终于找到了解决方案:
1:出错原因:是因为把联网的操作写在主线程中,从android 4.0以后就不允许这样操作了,
因为如果在主线程里联网,如果网络不好那么整个程序就卡死在那里了。
解决方案:所以android4.0以后对要联网的代码必须在新开一个线程来做。
2:出错原因:主要针对小米手机:小米Android4.0系统网络问题导致的,就算加上联网权限还是会报这个错误
解决方法:在使用的网络的Activity中的onCreate()方法中加上
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads().detectDiskWrites().detectNetwork()
.penaltyLog().build());就ok了