在android 中開發java.net.SocketException: socket failed: EACCES (Permission denied) 報錯


在android中下載文件,寫好下載文件的代碼后需要配置相應的權限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

按原則來說這樣就應該可以正常下載了,但是在android4.2 模擬器上運行(貌似4.0以上的模擬器都有這個問題) 獲取流getInputStream時總是報錯。百思不得其解,經百度得知添加一行代碼即可,至於為什么還要再以后的學習中慢慢了解。

在這里先做個記錄。

在.java文件中添加

  

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());

 

即可。

 

PS:剛從群里高手得知,是因為我聯網的代碼寫在了主線程里,從android 4.0以后就不允許這樣操作了,因為如果在主線程里聯網,如果網絡不好那么整個程序就卡死在那里了。所以android4.0以后對要聯網的代碼必須在新開一個線程來做。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM