一开始我是写一个网络请求,但是忘记添加网络权限了,运行后看日志出现权限问题,根据提示添加网络权限。
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/)
这个网站经常分享一些免费视频、免费音乐、实用工具和各种福利,感兴趣的朋友可以看看!