<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>lizongbo at 618119.com</title>
	<atom:link href="http://618119.com/feed" rel="self" type="application/rss+xml" />
	<link>http://618119.com</link>
	<description>工作,生活,Android,前端,Linode,Ubuntu,nginx,java,apache,tomcat,Resin,mina,Hessian,XMPP,RPC</description>
	<lastBuildDate>Tue, 31 Jan 2012 14:25:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Android4.0系统浏览器支持window.performance API了</title>
		<link>http://618119.com/archives/2012/01/31/217.html</link>
		<comments>http://618119.com/archives/2012/01/31/217.html#comments</comments>
		<pubDate>Tue, 31 Jan 2012 14:25:11 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://618119.com/?p=217</guid>
		<description><![CDATA[Android4.0系统浏览器支持window.performance API了 window.performance API是HTML5规范的一部分， window.performance规范的官方文档在： https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html 目前还是草稿阶段，中文介绍可以参考： http://www.cnblogs.com/_franky/archive/2011/11/07/2238980.html webkit的测试用例和属性列表可以参考： http://svn.webkit.org/repository/webkit/trunk/LayoutTests/fast//dom/Window/window-properties-performance.html http://svn.webkit.org/repository/webkit/trunk/LayoutTests/fast//dom/Window/window-properties-performance-expected.txt Android4.0系统自带的浏览器实现了这一规范，并且还扩展实现window.performance.memory。 通过JavaScript实际测试结果如下： window.performance.memory=[object MemoryInfo] window.performance.timing=[object PerformanceTiming] window.performance.navigation=[object PerformanceNavigation] window.performance.timing.connectStart=1328016452403 window.performance.timing.responseStart=1328016452403 window.performance.timing.domLoading=1328016453857 window.performance.timing.connectEnd=1328016452403 window.performance.timing.domInteractive=0 window.performance.timing.fetchStart=1328016452403 window.performance.timing.secureConnectionStart=0 window.performance.timing.domainLookupStart=1328016452403 window.performance.timing.responseEnd=0 window.performance.timing.requestStart=1328016452403 window.performance.timing.loadEventEnd=0 window.performance.timing.domComplete=0 window.performance.timing.redirectStart=0 window.performance.timing.unloadEventEnd=1328016453646 window.performance.timing.domContentLoadedEventStart=0 window.performance.timing.domContentLoadedEventEnd=0 window.performance.timing.domainLookupEnd=1328016452403 window.performance.timing.navigationStart=1328016452402 window.performance.timing.unloadEventStart=1328016453646 window.performance.timing.loadEventStart=0 window.performance.timing.redirectEnd=0 window.performance.navigation.redirectCount=0 window.performance.navigation.type=1 window.performance.navigation.TYPE_NAVIGATE=0 window.performance.navigation.TYPE_RELOAD=1 window.performance.navigation.TYPE_BACK_FORWARD=2 window.performance.navigation.TYPE_RESERVED=255 window.performance.memory.totalJSHeapSize=0 window.performance.memory.usedJSHeapSize=0 window.performance.memory.jsHeapSizeLimit=0 PS:Android从2.1版本还扩展实现了navigator.connection： 通过JavaScript测试结果如下： navigator.connection.type=4 navigator.connection.UNKNOWN=0 navigator.connection.ETHERNET=1 navigator.connection.WIFI=2 [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2012/01/31/217.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>手机wap网站开发过程中通过dtd校验来检查wap1.0和wap2.0的页面语法</title>
		<link>http://618119.com/archives/2011/08/21/212.html</link>
		<comments>http://618119.com/archives/2011/08/21/212.html#comments</comments>
		<pubDate>Sun, 21 Aug 2011 05:40:06 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Xhtml]]></category>
		<category><![CDATA[dtd]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[WAP]]></category>
		<category><![CDATA[wap1.0]]></category>
		<category><![CDATA[wap2.0]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[手机]]></category>

		<guid isPermaLink="false">http://618119.com/?p=212</guid>
		<description><![CDATA[手机wap网站开发过程中通过dtd校验来检查wap1.0和wap2.0的页面语法 对手机wap网站的wap1.0和wap2.0页面内容进行dtd的校验非常有价值，既可以保证页面对移动终端的兼容性，也能促使开发人员写出高质量的代码。 以前早期在做普通web页面开发的时候，对html的语法一知半解就开搞，标签不闭合，嵌套错误等问题从来没注意过，只管在IE6里打开能正常显示即可， 结果带来的后果就是在页面某个位置需要插入一段新内容时，整个页面就错位了，变得非常难看，也不知道怎么样来搞好，痛苦万分。 后来进行的是wap页面开发，wap页面用的是wap1.0的xml，加上各种山寨手机对wap页面的解析可不像电脑上的浏览器那样可以对错误的写法进行兼容，于是各种兼容性问题就出来了。 因此学会了用m3gate打开页面进行检查，只有m3gate打开时不出错的页面，才能放心的在各种山寨上正常显示而不出错。 再到后来，经过学习和总结，发现m3gate的检查其实和dtd校验的效果是一样的，于是摸索出通过dtd校验来发现标签嵌套错误等问题。 移动终端的发展是日新月异，很快就进入到了wap2.0时代，当然这个时候的手机浏览器对wap2.0的兼容性就好多了。 一些小的错误，也能兼容掉，但是难免也出现莫名其妙的错误，由于wap2.0的xml元素定义用的也还是dtd，因此继续用dtd校验来搞定。 wap1.0和wap2.0的自动化监控校验流程如下： 测试工具访问各个页面，获取对应的xml内容，保存为字符串，然后将页面的dtd声明部分，替换为对应的本地声明映射（这样避免联网获取dtd文件而影响性能）， 生成新的字符串，然后使用java的xml parser进行解析，解析过程中如果有抛出各种异常，那就是把页面内容有错的地方全部揪出来了，再通知开发人员进行页面内容的bug修复。 通常比如img元素缺少alt属性等问题都可以及时发现。 正式环境则通过自动化监控脚本定期访问业务进行检查。 进行dtd校验的相关代码如下： 1.将远程的dtd等实体解析映射到本地的LocalEntityResolver（自动化监控中是通过字符串替换来将dtd的声明替换为本地路径，我是直接通过EntityResolver来进行映射）： [code] package com.lizongbo.xml; import java.io.IOException; import org.xml.sax.EntityResolver; import org.xml.sax.InputSource; import org.xml.sax.SAXException; /** * 将xml组件依赖的远程的schema文件都映射到本地 * * @author lizongbo * */ public class LocalEntityResolver implements EntityResolver { @Override public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { System.out.println("publicId==" [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2011/08/21/212.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>从google的json接口获取地理位置信息的Java代码</title>
		<link>http://618119.com/archives/2011/05/05/209.html</link>
		<comments>http://618119.com/archives/2011/05/05/209.html#comments</comments>
		<pubDate>Thu, 05 May 2011 14:55:07 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[IP]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[cellid]]></category>
		<category><![CDATA[geo]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[lbs]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://618119.com/?p=209</guid>
		<description><![CDATA[从google的json接口获取地理位置信息的Java代码 google 提供了公开的接口，通过，这个接口，根据gps或基站信息或wifi热点信息来获取当前位置的地理信息. gps信息是经纬度，基站信息是基站的cellid等信息，wifi热点信息是wifi的mac地址是热点名字，信号强度等。 因此可以通过java程序获取相应信息，在LBS项目中可以用上： api接口定义描述在： http://code.google.com/p/gears/wiki/GeolocationAPI Java代码如下： [code] package com.lizongbo.geo; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; import com.lizongbo.org.json.JSONArray; import com.lizongbo.org.json.JSONException; import com.lizongbo.org.json.JSONObject; /** * 从google的json接口获取地理位置信息的代码 * * @author lizongbo * */ public class GeoTest { /** * @param args * @throws Exception */ public static void main(String[] args) [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2011/05/05/209.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>web网站判断是手机访问还是pc电脑访问的检测逻辑</title>
		<link>http://618119.com/archives/2011/01/26/207.html</link>
		<comments>http://618119.com/archives/2011/01/26/207.html#comments</comments>
		<pubDate>Tue, 25 Jan 2011 16:25:43 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[cmwap]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[pc]]></category>
		<category><![CDATA[WAP]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[手机]]></category>

		<guid isPermaLink="false">http://618119.com/?p=207</guid>
		<description><![CDATA[web网站判断是手机访问还是pc电脑访问的检测逻辑 在现在手机上网和wifi越来越普及的情况下，web网站需要对http的客户端进行区分并适配不同的页面，确保给用户最合适的体验效果。 因此从网站服务器端去分析，区分当前http请求是来自mobile的手机上的浏览器，还是来自Windows,Linux,Mac等PC电脑上的浏览器，就显得非常有必要了。 根据相关日志分析后总结出简单的识别逻辑规则如下： 首先从上网方式上来区分手机终端行为：用手机上网可能通过cmwap方式，cmnet方式，3g网络，wifi方式等 除了cmwap方式，其它方式上网的网络情况除了网速区别，其它情况基本一样。 因为存在有人在电脑上通过3g卡等方式上网，因此识别逻辑必须先识别明确就是电脑上的浏览器的ua，当作来自电脑的请求。 然后再识别cmwap网关的特征，包含特征的，则认为该请求来自手机终端。 其次再做手机ua识别，属于手机ua特征的，再当作手机请求，其它均当作电脑pc端的请求访问。 （不考虑用Accept这个header进行识别，因为这个头信息有很多是乱填的，完全不靠谱。） 通过对http头信息的分析检测，这样可以当前请求进行适配展现最适合的页面内容，让pc用户看web页面，手机用户看wap页面。 [code] package com.lizongbo.web.common; import javax.servlet.http.HttpServletRequest; public class HttpReqUtil { /**Wap网关特有和某些手机终端浏览器特有的头信息*/ private static String mobileHeaders[]=new String[]{ "HTTP_X_UP_CALLING_LINE_ID",//cmwap情况下中国移动的手机号码，目前基本没有这个head了 "x-up-calling-line-id",//uniwap情况下下中国联通手机号码，例如：x-up-calling-line-id=8615***618119，某些移动网关也用这个header放手机号码 "x-wap-profile",//手机终端才会有的uaprof文件url，例如：x-wap-profile="http://nds1.nds.nokia.com/uaprof/Nokia5800d-1r100-2G.xml " "X_WAP_PROFILE",//X_WAP_PROFILE=http://nds1.nds.nokia.com/uaprof/N6670r100.xml "X-Nokia-MusicShop-Bearer",//诺基亚手机送来的网络类型，例如X-Nokia-MusicShop-Bearer=GPRS/3G "X-Nokia-MusicShop-Version",//诺基亚网关送的参数，例如：X-Nokia-MusicShop-Version=11.1014.15 "x-up-bear-type",//wap网关的参数，疑似上网类型,例如：x-up-bear-type=GPRS，或x-up-bear- type=GPRS/EDGE，X-Up-Bearer-Type=CSD,x-up-bear-type=CDMA CSD,x-up-bear-type=TD-SCDMA "X-Nokia-BEARER",//诺基亚wap网关的参数，疑似上网类型,例如：X-Nokia-BEARER=WCDMA，或X-Nokia-BEARER=GPRS "X-Nokia-Gateway-Id",//诺基亚wap网关的参数，例如：X-Nokia-Gateway-Id=NBG/3.0/1，或X-Nokia-gateway-id=NWG/4.1/Build4.1.04 "X-Nokia-MSISDN",//诺基亚wap网关的参数，疑似用户手机号码，例如X-Nokia-MSISDN=861860******* "x-source-id",//cmwap网关参数，例如：x-source-id=220.206.156.33，也有：X-Source-ID=FZGGSN31 "X-Nokia-CONNECTION_MODE",//wap网关参数，例如：X-Nokia-CONNECTION_MODE=TCP "X-Nokia-MaxDownlinkBitrate",//诺基亚wap网关参数，含义未知，例如：X-Nokia-MaxDownlinkBitrate=0 "X-Nokia-MaxUplinkBitrate",//诺基亚wap网关参数，含义未知，例如：X-Nokia-MaxUplinkBitrate=0 "Bearer-Indication",//不明参数，例如：Bearer-Indication=11,    Bearer-Indication=gsm_gprs_ipv4 "X_NETWORK_INFO",//X_NETWORK_INFO=GPRS,86136********,10.100.246.217,cmwap,unsecured "x-NAS-Identifier",//含义不明，例如：x-NAS-Identifier=fj-telecom-cdma-pdsn "x-online-host",//cmwap客户端向cmwap指定header，不知道怎么的移动把它送给服务器了,例如：x-online-host=b.wap.618119.com:80 "X_WAP_CLIENTID",//疑似加密处理后的用户身份信息，例如X_WAP_CLIENTID=618119********** //以下是OperaMini特有的header ,see: http://dev.opera.com/articles/view/opera-mini-request-headers/ "X-OperaMini-Features",//OperaMini特有的客户端特性描述。例如：X-OperaMini- Features=advanced, download, [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2011/01/26/207.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于Android的nodpi,xhdpi,hdpi,mdpi,ldpi</title>
		<link>http://618119.com/archives/2011/01/12/205.html</link>
		<comments>http://618119.com/archives/2011/01/12/205.html#comments</comments>
		<pubDate>Wed, 12 Jan 2011 14:43:01 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[hdpi]]></category>
		<category><![CDATA[ldpi]]></category>
		<category><![CDATA[mdpi]]></category>
		<category><![CDATA[nodpi]]></category>
		<category><![CDATA[xhdpi]]></category>

		<guid isPermaLink="false">http://618119.com/?p=205</guid>
		<description><![CDATA[关于Android的nodpi,xhdpi,hdpi,mdpi,ldpi 首先是几个基本概念： 1.屏幕尺寸Screen size 即显示屏幕的实际大小，按照屏幕的对角线进行测量。 为简单起见，Android把所有的屏幕大小分为四种尺寸：小，普通，大，超大(分别对应：small, normal, large, and extra large). 应用程序可以为这四种尺寸分别提供不同的自定义屏幕布局-平台将根据屏幕实际尺寸选择对应布局进行渲染，这种选择对于程序侧是透明的。 2.屏幕长宽比Aspect ratio 长宽比是屏幕的物理宽度与物理高度的比例关系。应用程序可以通过使用限定的资源来为指定的长宽比提供屏幕布局资源。 3.屏幕分辨率Resolution 在屏幕上显示的物理像素总和。需要注意的是：尽管分辨率通常用宽x高表示，但分辨率并不意味着具体的屏幕长宽比。 在Andorid系统中，应用程序不直接使用分辨率。 4.密度Density 根据像素分辨率，在屏幕指定物理宽高范围内能显示的像素数量。 在同样的宽高区域，低密度的显示屏能显示的像素较少，而高密度的显示屏则能显示更多的像素。 屏幕密度非常重要，因为其它条件不变的情况下，一共宽高固定的UI组件（比如一个按钮）在在低密度的显示屏上显得很大， 而在高密度显示屏上看起来就很小。 为简单起见，Android把所有的屏幕分辨率也分为四种尺寸：小，普通，大，超大(分别对应：small, normal, large, and extra large). 应用程序可以为这四种尺寸分别提供不同的资源-平台将透明的对资源进行缩放以适配指定的屏幕分辨率。 5.设备独立像素Density-independent pixel (dp) 应用程序可以用来定义UI组件的虚拟像素单元，通过密度无关的方式来描述布局尺寸和位置。 一个设备独立像素相当于一个160 dpi屏幕上的物理像素。 在程序运行时，系统根据屏幕的实际密度透明的处理任何需要缩放的设备独立像素单元，设备独立像素转换成屏幕实际像素的换算很简单：pixels = dps * (density / 160). 例如在240 dpi的屏幕上，1个设备独立像素等于1.5物理像素.为确保UI组件在不同的屏幕都能合适的展示，强烈建议使用设备独立像素单元来定义你的应用程序UI。 四种屏幕尺寸分类：: small, normal, large, and xlarge 四种密度分类: ldpi (low), mdpi [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2011/01/12/205.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>获取Android的Java源代码并在Eclipse中关联查看的最新方法</title>
		<link>http://618119.com/archives/2011/01/01/201.html</link>
		<comments>http://618119.com/archives/2011/01/01/201.html#comments</comments>
		<pubDate>Fri, 31 Dec 2010 17:59:27 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[ADT]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://618119.com/?p=201</guid>
		<description><![CDATA[在Google搜索“Android Eclipse 源代码”得到的结果并不合适，因为Google的Eclipse Android开发插件已经更新到了ADT 8.0.1.相应的lib关联java源代码的方式也变了。 以下是获取Android的Java源代码并在Eclipse中关联的最新操作方法和步骤： 1.首先下载Android的SDK安装文件：http://dl.google.com/android/android-sdk_r08-windows.zip 然后解压到：E:\Java\android\android-sdk-windows，运行目录中的SDK Manager.exe,下载好Android不同版本的API包。 2.然后下载或在线安装Eclipse插件ADT, 安装包地址为：http://dl.google.com/android/ADT-8.0.1.zip 在线安装地址：https://dl-ssl.google.com/android/eclipse/ 来源：ttp://developer.android.com/sdk/eclipse-adt.html 2.ADT插件安装好之后，下载我已经打包好的Android 2.3（gingerbread）的java源代码压缩包： 下载地址：http://lizongbo.googlecode.com/files/android_gingerbread_javasrc.zip 来源：http://code.google.com/p/lizongbo/downloads/list 下载后复制到E:\Java\android\javasrc。 3.Android的Java源代码压缩包下载好之后，在Eclipse中设置好SDK配置： 操作步骤为：主菜单-&#62;Window&#8211;&#62;Preferences&#8211;&#62;选择Android，SDK Location设置为：E:\Java\android\android-sdk-windows,然后点右下角的Apply来生效。 4.开始进行关联Android的源代码，在Eclipse中新建一个Android工程，选中工程，主菜单 &#8211;&#62;Project&#8211;&#62;Properties&#8211;&#62;选择Android，Project Build Target选中Android 2.3。 然后再点左边的“Java Build Path”，切换到 Libraries 面板，展开 Android2.3 这个lib，点击android.jar的Source attachment，再点Edit.在对话框中点“External File”,选择E:/Java/android/javasrc/android_gingerbread_javasrc.zip,点OK进行确认。这样就把Android的java代码关联好了。 5.在同一个工程中，选中工程，主菜单&#8211;&#62;Project&#8211;&#62;Properties&#8211;&#62;选择 Android，Project Build Target分别选择Android1.5，Android1.6，Android2.01,Android2.1- update1，Android2.2，按上面第四步的操作重复设置关联。 以后在任何Android工程里按住Ctrl用鼠标点击Java类名都可以浏览到对应的java源代码。 Android各个版本对应的源代码为： Android1.5对应android_cupcake_javasrc.zip Android1.6对应android_donut_javasrc.zip Android2.01和Android2.1-update1对应的是android_eclair_javasrc.zip Android2.2对应android_froyo_javasrc.zip Android2.3对应android_gingerbread_javasrc.zip 6.在Eclipse配置好源代码关联之后之后的信息会存储在： E:\lizongbo\workspacenew\.metadata\.plugins\org.eclipse.core.resources\.root\.indexes\properties.index E:\lizongbo\workspacenew\.metadata\.plugins\org.eclipse.jdt.core\variablesAndContainers.dat 同时记录Android的java源代码压缩包制作方法如下： 1.先在远程的Ubuntu Linux服务器(是Linode VPS)上安装以下组件(JDK1.6已经安装好了)： sudo [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2011/01/01/201.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>手机上常见的安装文件名后缀和mime类型</title>
		<link>http://618119.com/archives/2010/12/29/198.html</link>
		<comments>http://618119.com/archives/2010/12/29/198.html#comments</comments>
		<pubDate>Tue, 28 Dec 2010 16:43:48 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[jad]]></category>
		<category><![CDATA[jar]]></category>
		<category><![CDATA[MIME]]></category>
		<category><![CDATA[mrp]]></category>
		<category><![CDATA[MTK]]></category>
		<category><![CDATA[Palm]]></category>
		<category><![CDATA[sisx]]></category>
		<category><![CDATA[Webos]]></category>
		<category><![CDATA[手机]]></category>
		<category><![CDATA[手机QQ]]></category>

		<guid isPermaLink="false">http://618119.com/?p=198</guid>
		<description><![CDATA[手机上常见安装文件名后缀和mime类型 kjava是最通用的平台，有些手机只支持kjava,j2me的安装文件名以jar和jad结尾。 Android平台的软件后缀名是apk 例如手机QQ1.0(Android)Beta3Build0077的安装文件是：MobileQQ1.0(Android)Beta3Build0077.apk 如果安装了Java虚拟机的话，也可以安装文件名以jar和jad结尾的软件。 塞班(Symbian)的S60V3和S60v5平台支持的文件名后缀有：sis,sisx,jar,jad,wgz。 例如：手机QQ2010(S60V3)Beta4Build1186的安装文件名为：QQ2010(S60V3)Beta4Build1186.sisx 塞班(Symbian)S40平台只支持kjava因此安装文件名也是以jar和jad结尾。 塞班(Symbian)S60V2平台通常也支持kjava，也支持sis格式的安装文件，因此支持的格式一共有sis,jar,jad。 Symbian3是塞班新出的平台支持的文件名后缀有jar,jad,sisx和sis。 黑莓（BlackBerry）平台支持的文件名后缀有jar，jad，cod。 Plam webOS支持的安装文件名后缀有jar,jad,prc,ipk。 MTK平台的手机分支持java和不支持java两种情况，一般支持的安装文件名后缀有jar，jad，mrp。 斯凯平台是MTK平台上的中间件，支持的文件名后缀为：mrp iPhone操作系统支持的按成程序文件名后缀为：pxl,ipa，deb。 Windows Mobile平台支持的文件名后缀有cab,jar,jad,exe。 例如手机QQ2008(Pocket PC)正式版 Build0093的安装文件名为：PPCQQ2008_Build093.CAB 下面是各种文件名后缀在nginx的mime.types中的配置： text/vnd.sun.j2me.app-descriptor      jad; application/java-archive              jar war ear; application/x-java-archive-diff       jardiff; application/vnd.android.package-archive apk; application/vnd.ms-cab-compressed              cab; application/octet-stream              bin exe dll; application/vnd.symbian.install       sis; x-epoc/x-sisx-app                     sisx; application/iphone                    pxl ipa; application/vnd.palm                  prc pdb; application/vnd.webos.ipk             ipk; application/vnd.rim.cod               cod; application/mrp                       mrp; x-nokia-widget                        [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2010/12/29/198.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>java.net.URL设置代理服务器和自定义Host头绕过DNS解析</title>
		<link>http://618119.com/archives/2010/12/23/202.html</link>
		<comments>http://618119.com/archives/2010/12/23/202.html#comments</comments>
		<pubDate>Wed, 22 Dec 2010 16:34:54 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[DNS]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[net]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[虚拟主机]]></category>

		<guid isPermaLink="false">http://618119.com/?p=202</guid>
		<description><![CDATA[在實際工作中，由于办公网络的限制，连接外网访问时需要指定代理， 而访问某些虚拟主机域名的服务器时，并不存在对应的dns解析记录，因此需要手工配置hosts文件来进行映射，非常麻烦。 于是根据java.net.URL的api整理了设置代理服务器和自定义Host头绕过DNS解析的方法： 代码如下： [code] public static void main(String[] args) throws IOException { /** * 下面这种方法是全局方式的设置 ，不建议使用。 System.setProperty("proxySet", "true"); * System.setProperty("proxyHost", "proxy.lizongbo.com"); * System.setProperty("proxyPort", "8080"); */ String urlStr = "http://about.me/lizongbo"; urlStr = "http://about.me/lizongbo"; HttpURLConnection httpConn = null; StringBuilder sb = new StringBuilder(); URL url = new URL(urlStr); String hostName = url.getHost(); // 根据配置自定义url里的ip地址 if (hostName.toLowerCase().endsWith(".mqq.im")) [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2010/12/23/202.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在Android的webview中定制js的alert,confirm和prompt对话框的方法</title>
		<link>http://618119.com/archives/2010/12/20/199.html</link>
		<comments>http://618119.com/archives/2010/12/20/199.html#comments</comments>
		<pubDate>Mon, 20 Dec 2010 12:33:28 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[onJsAlert]]></category>
		<category><![CDATA[onJsConfirm]]></category>
		<category><![CDATA[onJsPrompt]]></category>
		<category><![CDATA[WebView]]></category>

		<guid isPermaLink="false">http://618119.com/?p=199</guid>
		<description><![CDATA[1.首先继承android.webkit.WebChromeClient实现MyWebChromeClient。 2.在MyWebChromeClient.java中覆盖onJsAlert,onJsConfirm,onJsPrompt三个方法。 3.在初始化Webview时设置调用webview.setWebChromeClient(new MyWebChromeClient()); 4.在Webview载入的html中使用window.alert,window.confirm,window.prompt方法，系统弹出的将是自定义实现的对应对话框。 MyWebChromeClient.java的代码如下： [code] package com.lizongbo.mwebdev.android; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.content.DialogInterface.OnClickListener; import android.content.DialogInterface.OnKeyListener; import android.graphics.Bitmap; import android.os.Message; import android.util.Log; import android.view.KeyEvent; import android.webkit.JsPromptResult; import android.webkit.JsResult; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.widget.EditText; public class MyWebChromeClient extends WebChromeClient { @Override public void onCloseWindow(WebView window) { super.onCloseWindow(window); } @Override public boolean onCreateWindow(WebView [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2010/12/20/199.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

