android 访问网络,Android 无法访问网络的解决方法

最近在做一个项目的时候遇到一个问题,那就是无论如何都无法访问网络,一开始我以为是我的 HTTP 请求类出了问题,于是换了好几个封装好的 HTTP Client,可是一点用都没有,还是无法访问。

接着百度了一下,有人说是因为没有给权限,于是我在 AndroidManifest.xml 里添加了以下内容

结果依然无效!但是不可否认,这个权限必须要设定的(后来我也试过了,不加权限是不能访问的,但是问题根源不在这)

然后又是百度,翻来翻去找到了一个帖子,里面谈到了线程问题。

因为 Android 开发工程师考虑到用户的体验,HTTP 请求通常需要放在一个单独的线程里进行。

于是我将 HTTP 请求代码放入一个新线程中执行

new Thread(){

@Override

public void run() {

CgiText = HttpClient.sendGet("http://192.168.1.12/cgi/");

}

}.start();

结果依然无法访问!!到底是什么鬼?

就在我快崩溃的时候,一个很偏门的帖子被我找到了。

原来是 StrictMode 在作怪

解决方法就是,加入下面这个方法

public static void closeStrictMode() {

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build());

}

然后在每次 HTTP 请求之前调用一次这个方法,将 StrictMode 关闭就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值