您的位置:首页 > 编程语言 > Java开发

java.net.SocketException: socket failed: EACCES (Permission denied)联网权限已经设置了还是报错的两个原因及解决方案

2015-07-02 09:31 465 查看
最近在移动开发的时候遇到了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了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: