细数Android Bug

    咱们的三、四岁孩子:Android有些问题。现罗列一下,以后会断断续续补充

 

 

 

  • java.net.URLEncoder 当使用 URLEncoder.encode(String param), param中包含一些特殊字符如空格, 百分号等,则会触发如下异常:   java.lang.IllegalArgumentException 解决办法: 自己实现encode或先对这些特殊字符做处理 如: public static final String ENCODING_POST[] = {"%25","%22","%20","%21","%23","%24","%26","%27","%28","%29","%2A","%2B","%2C","%2D","%2E","%2F","%3A","%3B","%3C","%3D","%3E","%3F","%40","%5B","%5C"," %5D","%5E","%5F","%60"};
    	   
    	  public static final char ENCODING_CHAR[] = {'%','\"',' ','!','#','$','&','\'','(',')','*','+',',','-','.','/',':',';','<','=','>','?','@','[','\\',']','^','_','`'};
     

 

 

  •  java.net.HttpURLConnection 大部分从j2ee转入Android的开发员都容易直接使用这个类来做所有http操作,如: /* HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
    			   con.setRequestMethod("HEAD");
    			   con.setFollowRedirects(false);
    
    			   con.setConnectTimeout(TIMEOUT_FOR_CONNECTION); 
    			   con.setReadTimeout(TIMEOUT_FOR_READ);
    			   return (con.getResponseCode() == HttpURLConnection.HTTP_OK);*
     可是他在一些sdk并不工作(现在发现并不是http server不支持Http Head,而是部分sdk并不支持,而且没有等到Timeout,返回的status code并不是200).   最后解决如下: 使用DefaultHttpClient(或HttpClient) + HttpHead . 至此对 java.net.HttpURLConnection不再信任

 

  • Xml Parser,无论是采用DOM或SAX parser,只要碰到文本节点包含特殊字符如&,>,<甚至<![CDATA[等都会报异常或不作后继的解析. 解决办法对确保出现特殊字符的xml自己用字符串方式解析
  • android.webkit.WebView
    • WebView+ScrollView(即WebView置于ScrollView中),则会碰到WebView中的href更本不响应(clicking):也就是超级链接失效,解决办法,去掉外层的ScrollView
    • WebView+TabHost+Select(即WebView是通过Xml配置的,放于ActivityGroup中的一个Activity的Layout中,碰到WebView有html的Select选单(对应Android的Spinner),则会在用户点击选择Item的时候发生异常:   android.view.WindowManager$BadTokenException: Unable to add wind          //-- token android.app.LocalActivityManager$LocalActivityRecord@44ed8338 is not valid; is your activity running?  解决办法: 代码生成WebView : webview = new WebView(this.getParent() == null ? this : this.getParent());
    • WebView的Zoom和他的OnTouchListener,当设置setBuiltInZoomControls(true)后触摸WebView可能在一些ROM上会有Zoom Button, Zoom Button出现后WebView就不在有任何OnTouchListener响应。原本想借用onTouch实现LongPress+ContextMenu,最后没辄,用OptionMenu代替了

 

 

 

    如果你的孩子也存在上述问题,别忘记了我没提醒你怎么帮助引导改善他。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值