安卓3.0之后的网络访问问题

在Activity中使用如下web请求

[java] view plaincopy

  1. String url = "http://maps.google.com/maps/api/directions/xml?origin=22.592700,113.969100" +     
  2.     "&destination=23.046604,113.397510&sensor=false&mode=walking";     
  3.        
  4.   HttpGet get = new HttpGet(url);     
  5.   String strResult = "";     
  6.   try {     
  7.    HttpParams httpParameters = new BasicHttpParams();     
  8.    HttpConnectionParams.setConnectionTimeout(httpParameters, 6000);     
  9.    HttpClient httpClient = new DefaultHttpClient(httpParameters);      
  10.         
  11.    HttpResponse httpResponse = null;     
  12.    httpResponse = httpClient.execute(get);     
  13.         
  14.    if (httpResponse.getStatusLine().getStatusCode() == 200){     
  15.     strResult = EntityUtils.toString(httpResponse.getEntity());     
  16.    }     
  17.   } catch (Exception e) {     
  18.    e.printStackTrace();   
  19.   }    

发现请求总是无法得到,在浏览器中尝试发现请求语句没有问题

DDMS报错为:android.os.NetworkOnMainThreadException

经查询发现原来Android3.0以上对网络请求做了更严格的限制,若要继续按照以前的方式继续使用网络请求,须做一些特别的声明。

 

解决办法:

在Activiey的OnCreate方法中添加以下代码

[java] view plaincopy

  1. StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites()  
  2. .detectNetwork()   // or .detectAll() for all detectable problems  
  3. .penaltyLog()  
  4. .build());  
  5. StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());  

 

 

时间: 2024-10-10 16:29:19

安卓3.0之后的网络访问问题的相关文章

安卓虚拟机网络访问失败的可能原因

问题描述 安卓虚拟机网络访问失败的可能原因 关于一个查询手机归属地的简单DEMO,我的电脑上的虚拟机运行就说访问失败,我把程序打包拷贝到同学电脑上的虚拟机上就运行成功.主程序部分代码如下.(肯定不是权限什么的问题了,因为都是同一个程序) public void query(View view){ String number=et_number.getText().toString(); try { String address=queryservice.getAddress(number); T

网络编程-android 安卓 4.0 给一个客户端和服务器的demo。

问题描述 android 安卓 4.0 给一个客户端和服务器的demo. android 4.0以后到底是怎么联网的?求大神给一个demo.一个客户端和一个服务器的.服务器端servlet的写的吧.越详细越好.谢谢了.对那个异步消息不是很懂,还有就是子线程一块给详细点.谢谢了 解决方案 楼主,你这个问题有点大...我提供一些思路 客户端就不用说了.服务器端,按照现在的流行趋势,建议用Nodejs + MongoDB.Nodejs就类似tomcat,是给服务器端部署监听,监听客户端的请求.Mong

PacketFence ZEN 3.0发布 网络访问控制系统

PacketFence ZEN是一个网络http://www.aliyun.com/zixun/aggregation/38609.html">访问控制(NAC)系统.它支持注册新的网络设备,发现异常的网络活动,隔离有问题的设备,矫正被控制的端口,以注册为基础和预设漏洞扫描,VoIP支持VLAN隔离(甚至在异构环境中)多个交换机厂商,支持802.1x通过FreeRADIUS模块,FreeRADIUS无线集成,DHCP指纹识别等等. 它包含了一个VMware镜像内置PacketFence的完

安卓5.0.1到底更新了什么?

安卓5.0才发布没多久,第一个升级版本5.0.1就悄然推送了,不过它到底更新了什么呢?从刚刚公布的开发者更新日志里可以看出一些痕迹.截至目前,安卓5.0.1 LRX22C已经推送给Nexus 7 2013 Wi-Fi.Nexus 9.Nexus 10等几款平板,Nexus 7 2012应该不会有了,Nexus 4则应该会很快跟进.一般来说,这种升级版本都是解决特定设备的特定问题,以及一些很紧急的重要Bug.比如安卓5.0.1,就为Nexus 4.Nexus 7 2013升级了内核,并且修复了Ne

升级安卓4.0系统 纽曼P9平板评测

第1页:系统再次升级重装上阵 不知不觉地为期四天的CES2012国际消费电子产品展落幕了.在美国拉斯维加斯,一座纸醉金迷的城市,一场举世瞩目的电子产品盛会,在2012年的伊始便吹响了新一轮数码家电大战的号角.最近关注过中关村在线CES2012专题的网友应该能够感觉到,手机.平板.超极本和智能家电注定将是今年各家厂商厉兵秣马的主战场. ·升级安卓4.0系统 纽曼P9平板评测 和去年略显不同,谷歌旗下的Android系统在此次展会上并没有给我们带来什么新的惊喜,不过谷歌没有动静并不代表其阵营中的厂商

安卓5.0十三大新特点

[环球网科技综合报道]据日本Gigazine新闻网10月16日报道,谷歌公司10月16日正式推出了众人盼望已久的 安卓5.0系统,并依然按照以甜品名称命名的方式为最新的系统冠以一个新代号--棒棒糖.安卓5.0是谷歌公司6月26日在2014谷歌I/O大会上发布的安卓L的正式版.16日一同发布的Nexus6智能手机. Nexus9平板.以及NexusPlayer三款硬件设备是首批搭载 Android5.0系统的机型.新系统究竟带来了哪些新惊喜呢?一起来看一下吧. 1,全新用户界面 新款安卓5.0采用

用开源NAC阻止非法网络访问

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chenguang.blog.51cto.com/350944/1737794 用开源NAC阻止非法网络访问   本文将要介绍的NAC代表网络准入控制(Network Access Control),在传统方法中,为了防止外来设备接入企业网可以采用在交换机上设置 IP-MAC绑定,结合ACL等方法使外来设备无法接入网络.目前市面上已经出现了一些上网行为管理和审计类产品,再此对比较

网络访问优化下载

利用有效网络访问优化下载 使用无线电波(wireless radio)进行数据传输可能是应用最耗电的操作之一.为了降低网络连接的电量消耗,清楚的理解连接模型(connectivity model)如何影响底层的无线通讯硬件设备,显得尤为重要. 这节课介绍了无线电波状态机(wireless radio state machine),并解释了应用的连接模型(connectivity model)是如何与之交互的.进而我们会提出一些建议和方法去优化数据连接,使用预取策略(use prefetching

Docker端口映射实现网络访问

Docker端口映射实现网络访问 首先,大家如果看到有什么不懂的地方,欢迎吐槽!!! 我会在当天或者第二天及时回复,并且改进~~ Docker运行容器之后却发现没IP,没端口,那要如何访问容器呢? 下面我来介绍下Docker通过端口映射来实现网络访问 一.从外部访问容器应用 在启动容器的时候,如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的. 当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-P或-p参数指定端口映射. 先来说说p和P吧 -p 可以指定要映射的