java.net.SocketException: socket failed: EACCES (Permission denied)聯網權限已經設置了還是報錯的兩個原因及解決方案

最近在移動開發的時候遇到了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了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章