java.net.SocketException: socket failed: EPERM (Operation not permitted)

问题描述

一开始我是写一个网络请求,但是忘记添加网络权限了,运行后看日志出现权限问题,根据提示添加网络权限。

uses-permission android:name=“android.permission.INTERNET”

但是问题来了,我运行程序后,还是出现问题,问题如下。

2019-09-30 15:29:39.950 21300-21356/com.yezijie.wanandroid W/System.err: java.net.SocketException: socket failed: EPERM (Operation not permitted)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at java.net.Socket.createImpl(Socket.java:492)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at java.net.Socket.getImpl(Socket.java:552)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at java.net.Socket.setSoTimeout(Socket.java:1180)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:143)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:116)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:248)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:211)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:30)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at com.yezijie.wanandroid.util.HttpUtil.sendHttpRequest(HttpUtil.java:41)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at com.yezijie.wanandroid.MainActivity$1.run(MainActivity.java:49)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid W/System.err:     at java.lang.Thread.run(Thread.java:919)
2019-09-30 15:29:39.951 21300-21356/com.yezijie.wanandroid D/MainActivity: onCreate: socket failed: EPERM (Operation not permitted)


解决方法

网上很多人说不仅要添加网络访问权限,还需要添加网络状态权限,

uses-permission android:name=“android.permission.ACCESS_NETWORK_STATE”

经我验证,这种方法是行不通的,即使添加后还是出现这情况,所以与这个权限没有半毛钱关系。

后来我 卸载了程序重新安装(之前这里我可能说的不清楚,很多人以为是卸载AS,我想吐槽一下,为啥你们会想到要卸载AS呢······我说的卸载程序是卸载Android应用程序,也就是你安装在模拟器或者真机上的apk应用程序。) ,竟然就能正常运行了,是的,你没听错,就是这么简单粗暴!为了验证是什么回事,我重复操作多遍,将程序还原原来的样子卸载后重新安装,发现导致这原因是:一开始网络请求时我没有赋予网络权限,我重新给程序赋予权限时我并没有卸载程序,只是重新编译,系统并没有获取到配置文件中的权限,因此需要卸载重新安装。这是我个人理解,如有错误,欢迎留言指出,谢谢!



个人网站:分享客https://sharerdiary.com/
这个网站经常分享一些免费视频、免费音乐、实用工具和各种福利,感兴趣的朋友可以看看!

您的关注和点赞是我分享的动力,如有帮助请勿吝啬!ヽ( ̄▽ ̄)ノ



  • 97
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 74
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 74
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值