java.net.SocketException: socket failed: EPERM (Operation not permitted)
16lz
2021-01-26
问题描述
一开始我是写一个网络请求,但是忘记添加网络权限了,运行后看日志出现权限问题,根据提示添加网络权限。
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/)
这个网站经常分享一些免费视频、免费音乐、实用工具和各种福利,感兴趣的朋友可以看看!
您的关注和点赞是我分享的动力,如有帮助请勿吝啬!ヽ( ̄▽ ̄)ノ
更多相关文章
- Android系统架构介绍
- [置顶] android学习系列-短信发送器与电话拨号器调用(3)
- Android:AndroidManifest.xml
- Android(安卓)中文api (81)——InputMethod [输入法]
- Android应用程序Click事件与Touch事件处理
- android之应用程序启动第三方应用
- Android(安卓)开始支持Vulkan图形编程接口标准
- Android(安卓)6.0+ 运行时权限探索
- android中对程序进行数字证书签名的方法