posts - 9,  comments - 2,  trackbacks - 0

今天在项目中引用了工程外的几个包编译没错 跑起来就报 NoClassDefFoundError 错误 

 跑起来的时候没有找到这几个包里面的类

解决方法如下:

1 改变classpath环境变量  怎么设置就不说了 java程序员都知道

 

改成:   .;D:\Program Files\Java\jdk1.7.0_02\lib;D:\Program Files\Java\jdk1.7.0_02\lib\tools.jar;

注意前面有个 .;    具体的jdk地址请替换成自己的。

 

2 在工程名右击创建文件夹取名 lib  把要引用的包复制到这里面  然后右击工程名 选择build path  点add external Archives 然后选择工程下面lib刚添加进去的包。

注意lib要设置成资源目录 右击lib 选择build path 点击 use as source folder

 

重新编译 程序就能跑起来了。


 

 

posted @ 2012-03-29 15:28 西蒙福曼 阅读(124) 评论(1) 编辑
本文主要对WebView进行介绍,包括webView 4个可以定制的点、设置WebView back键响应、控制网页的链接仍在webView中跳转、显示页面加载进度、处理https请求、利用addJavascriptInterface实现android程序和javascript交互等等

WebView基于webkit引擎展现web页面的控件,使用前需要在Android Manifest file中配置internet访问权限,否则提示页面无法访问
Xml代码  [url=][/url]

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

WebView控件功能强大,除了具有一般View的属性和设置外,还可以对url请求、页面加载、渲染、页面交互进行强大的处理。
WebView有几个可以定制的点:
(1)设置WebChromeClient子类,WebChromeClient会在一些影响浏览器ui交互动作发生时被调用,比如WebView关闭和隐藏、页面加载进展、js确认框和警告框、js加载前、js操作超时、webView获得焦点等等,详见WebChromeClient

(2)设置WebViewClient子类,WebViewClient会在一些影响内容喧嚷的动作发生时被调用,比如表单的错误提交需要重新提交、页面开始加载及加载完成、资源加载中、接收到http认证需要处理、页面键盘响应、页面中的url打开处理等等,详见WebViewClient

(3)设置WebSettings类,其中包含多项配置。WebSettings用来对WebView的配置进行配置和管理,比如是否可以进行文件操作、缓存的设置、页面是否支持放大和缩小、是否允许使用数据库api、字体及文字编码设置、是否允许js脚本运行、是否允许图片自动加载、是否允许数据及密码保存等等,详见WebSettings

(4)设置addJavascriptInterface方法,将java对象绑定到webView中,以方便从页面js中控制java对象, 实现用本地java代码和html页面进行交互,甚至可以进行页面自动化。但如此做存在安全隐患,所以若设置了此方法,请确保webView的代码都是自 己完成,详细使用addJavascriptInterface进行自动化见本文5使用addJavascriptInterface完成和js交互

1、back键控制网页后退
Activity默认的back键处理为结束当前Activity,webView查看了很多网页后,希望按back键返回上一次浏览的页面,这个时候我们就需要覆盖onKeyDown函数,告诉他如何处理,如下:
Java代码  [url=][/url]

  • public
    boolean onKeyDown(int keyCode, KeyEvent event) {  
  •     if (webView.canGoBack() && event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {  
  •         webView.goBack();  
  •         return
    true;  
  •     }  

  •     return
    super.onKeyDown(keyCode, event);  
  • }  

其中webView.canGoBack()在webView含有一个可后退的浏览记录时返回true
webView.goBack();表示返回webView的上次访问页面

2、当前网页的链接仍在webView中跳转
Java代码  [url=][/url]

  • webView.setWebViewClient(new WebViewClient() {  

  •     @Override
  •     public
    boolean shouldOverrideUrlLoading(WebView view, String url) {  
  •         view.loadUrl(url);  
  •         return
    true;  
  •     }  
  • });  

shouldOverrideUrlLoading表示当前webView中的一个新url需要加载时,给当前应用程序一个处理机会,如果没有重写此函 数,webView请求ActivityManage选择合适的方式处理请求,就像弹出uc和互联网让用户选择浏览器一样。重写后return true表示让当前程序处理,return false表示让当前webView处理
Xml代码  [url=][/url]

  • Give the host application a chance to take over the control when a new url is about to be loaded in the current WebView. If WebViewClient is not provided, by default WebView will ask Activity Manager to choose the proper handler for the url. If WebViewClient is provided, return true means the host application handles the url, while return false means the current WebView handles the url.  

参考:
http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading(android.webkit.WebView, java.lang.String)

问题分析:
今天在用webView load腾讯的OAuth页面http://open.t.qq.com/cgi-bin/authorize
时,突然弹出选择uc还是互联网浏览器的确认框,很奇怪,其他页面都能正常load,而这个却无法在webView中load,后来用火狐看了下是因为load这个页面的时候会重定向到另外一个页面http://open.t.qq.com/oauth_html/login.php?oauth_token=xxx&type=0,而webView没有设置shouldOverrideUrlLoading,导致url交给了ActivityManage去处理,解释如上,后添加后可正常load页面

3、页面加载进度
代码如下
Java代码  [url=][/url]

  • webView.setWebChromeClient(new WebChromeClient() {  

  •     public
    void onProgressChanged(WebView view, int progress) {  
  •         setTitle("页面加载中,请稍候..." + progress + "%");  
  •         setProgress(progress * 100);  

  •         if (progress == 100) {  
  •             setTitle(R.string.app_name);  
  •         }  
  •     }  
  • });  

onProgressChanged通知应用程序当前页面加载的进度
progress
表示当前页面加载的进度,为1至100的整数
参考:
http://developer.android.com/reference/android/webkit/WebChromeClient.html#onProgressChanged(android.webkit.WebView, int)

4、处理https请求
webView默认是不处理https请求的,页面显示空白,需要进行如下设置:
Java代码  [url=][/url]

  •     webView.setWebViewClient(new WebViewClient() {  

  •         @Override
  •         public
    void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {  
  •             handler.proceed();  
  • //            handler.cancel();
  • //            handler.handleMessage(null);
  •         }  
  •     });  

onReceivedSslError为webView处理ssl证书设置
其中handler.proceed();表示等待证书响应
handler.cancel();表示挂起连接,为默认方式
handler.handleMessage(null);可做其他处理
参考:
http://developer.android.com/reference/android/webkit/WebViewClient.html#onReceivedSslError(android.webkit.WebView, android.webkit.SslErrorHandler, android.net.http.SslError)

5、使用addJavascriptInterface完成和js交互
5.1 javascript中调用java对象及方法
设置webView的addJavascriptInterface方法,该方法有两个参数,第一个参数为被绑定到js中的类实例,第二个参数为在js中暴露的类别名,在js中引用java对象就是用这个名字
Java代码  [url=][/url]

  • ClassBeBindedToJS classBeBindedToJS = new ClassBeBindedToJS();  
  • webView.addJavascriptInterface(classBeBindedToJS, "classNameBeExposedInJs");   


实现绑定到js的类,其中的javaMethod方法我们将在页面前端js中调用,用于返回一段内容。showHtml用来使用AlertDialog显示一段html代码,稍后将使用到
Java代码  [url=][/url]

  • private
    class ClassBeBindedToJS{  
  •     public
    void showHtml(String html){  
  •          new AlertDialog.Builder(UpdateStatusActivity.this)   
  •                      .setTitle("HTML").setMessage(html)  
  •                      .setPositiveButton(android.R.string.ok, null)  
  •                      .setCancelable(false).create().show();  
  •     }  
  •     public String javaMethod() {  
  •         return
    "use java method";  
  •     }  
  • };  

如此我们就可以在前端调用java对象,如下:
Html代码  [url=][/url]

  • <span><html>
  •     <body>
  •         <div
    id="displayDiv">Test page.</div>
  •         <input
    type="button"
    value="use java object"
    onclick="document.getElementById('</span>displayDiv').innerHTML=classNameBeExposedInJs.javaMethod()"
    />
  • <span>
    </body>
  • </html></span>

这段html作用为点击button按钮,改变div内容为java对象方法中的内容,其中classNameBeExposedInJs为java对象在js中的别名,javaMethod为java对象的方法

5.2 java中调用js方法
用webView的loadUrl实现,比如现在我们想在页面加载完成后调用js中的hello函数,实现如下:
Java代码  [url=][/url]

  • webView.setWebViewClient(new WebViewClient() {   
  •     @Override
  •     public
    void onPageFinished(WebView webView, String url){  
  •         webView.loadUrl("javascript:hello()");  
  •     }  
  • });  

怎么样,很简单吧^_^,直接loadUrl("javascript:hello()")就可以了
利用这一点我们可以很方便的实现WebView的自动化,如网页自动化登录。举个栗子,实现http://m.renren.com/ 的自动登录啊,代码如下
Java代码  [url=][/url]

  • webView.getSettings().setJavaScriptEnabled(true);  
  • webView.loadUrl("http://m.renren.com");  
  • webView.requestFocus();  

  • ClassBeBindedToJS classBeBindedToJS = new ClassBeBindedToJS();  
  • webView.addJavascriptInterface(classBeBindedToJS, "classNameBeExposedInJs");      
  • webView.setWebViewClient(new WebViewClient() {   
  •     @Override
  •     public
    void onPageFinished(WebView webView, String url){   
  •         webView.loadUrl("javascript:document.getElementsByName('email')[0].value='userName'");   
  •         webView.loadUrl("javascript:document.getElementsByName('password')[0].value='userPassword'");   
  •         webView.loadUrl("javascript:document.getElementsByName('login')[0].click()");  
  •     }  
  • });  

从中可以看出先加载http://m.renren.com页面,在页面加载完成onPageFinished后,调用js实现自动登录
其中三句js分别表示设置用户名文本框内容、设置用户密码文本框内容、点击登录按钮,如此登录成功喽

5.3 java和js混用实现一些效果
5.3.1 WebView用AlertDialog显示页面的html代码
之前5.1中的showHtml方法现在派上用场啦,在页面加载完成后显示页面html内容,如下:
Java代码  [url=][/url]

  • webView.setWebViewClient(new WebViewClient() {   
  •     @Override
  •     public
    void onPageFinished(WebView webView, String url){  
  •         webView.loadUrl("javascript:window.classNameBeExposedInJs.showHtml(document.getElementsByTagName('html')[0].innerHTML);");  
  •     }  
  • });  

其中webView.loadUrl表示调用页面中的js,而页面中的js window.classNameBeExposedInJs.showHtml调用了程序中的java对象的方法,方法参数为一段js。
首先webView会执行这一段js document.getElementsByTagName('html')[0].innerHTML。含义即为取得页面中html标记的innerHTML,及网页主要内容;
然后将得到的网页内容当作字符串参数传入showHtml方法
最后调用showHtml函数实现,即用AlertDialog显示字符串,如此得到了整个网页的大部分html代码

5.3.2 WebView显示当前页面的url地址
获得WebView当前页面url使用webView.getUrl()即可,如下:
Java代码  [url=][/url]

  • webView.loadUrl("javascript:window.classNameBeExposedInJs.showHtml('" + webView.getUrl() + "');"); 


 

转自:

http://dev.10086.cn/cmdn/bbs/thread-58839-1-1.html

posted @ 2012-03-22 19:45 西蒙福曼 阅读(665) 评论(0) 编辑
    在manifest文件中的activity标签中加入

 <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
   <category android:name="android.intent.category.BROWSABLE" />
   <data android:mimeType="application/txt" />
    <data android:mimeType="application/pdf" />
    <data android:mimeType="application/epub" />

 

           未完。。。。。

 

posted @ 2012-03-20 22:15 西蒙福曼 阅读(240) 评论(0) 编辑
Android调用平台功能
下面的一些例子是从网上找的,他有点像J2ME的platformRequest,能调用手机平台的一些如SMS,浏览器,MMS,TEL等功能

显示网页

Java代码 
  1. Uri uri = Uri.parse("http://google.com");       
  2. Intent it = new Intent(Intent.ACTION_VIEW, uri);       
  3. startActivity(it);     

显示地图

Java代码 
  1. Uri uri = Uri.parse("geo:38.899533,-77.036476");       
  2. Intent it = new Intent(Intent.ACTION_VIEW, uri);        
  3. startActivity(it);        
  4. //其 他 geo URI 範例       
  5. //geo:latitude,longitude       
  6. //geo:latitude,longitude?z=zoom       
  7. //geo:0,0?q=my+street+address       
  8. //geo:0,0?q=business+near+city       
  9. //google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom     

拨打电话

Java代码 
  1. //叫 出撥號程式       
  2. Uri uri = Uri.parse("tel:0800000123");       
  3. Intent it = new Intent(Intent.ACTION_DIAL, uri);       
  4. startActivity(it);      
  5. //直接打電話出 去       
  6. Uri uri = Uri.parse("tel:0800000123");       
  7. Intent it = new Intent(Intent.ACTION_CALL, uri);       
  8. startActivity(it);       
  9. //用這個,要 在 AndroidManifest.xml 中,加上       
  10. //<uses-permission id="android.permission.CALL_PHONE" />     

发送SMS/MMS

Java代码 
  1. //需 写号码SMS      
  2. Intent it = new Intent(Intent.ACTION_VIEW);       
  3. it.putExtra("sms_body""The SMS text");        
  4. it.setType("vnd.android-dir/mms-sms");       
  5. startActivity(it);      
  6. //发送 SMS       
  7. Uri uri = Uri.parse("smsto:0800000123");       
  8. Intent it = new Intent(Intent.ACTION_SENDTO, uri);       
  9. it.putExtra("sms_body""The SMS text");       
  10. startActivity(it);      
  11. //发送 MMS       
  12. Uri uri = Uri.parse("content://media/external/images/media/23");       
  13. Intent it = new Intent(Intent.ACTION_SEND);        
  14. it.putExtra("sms_body""some text");        
  15. it.putExtra(Intent.EXTRA_STREAM, uri);       
  16. it.setType("image/png");        
  17. startActivity(it);    

发送EMAIL

Java代码 
  1. Uri uri = Uri.parse("mailto:xxx@abc.com");       
  2. Intent it = new Intent(Intent.ACTION_SENDTO, uri);       
  3. startActivity(it);      
  4. Intent it = new Intent(Intent.ACTION_SEND);       
  5. it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");       
  6. it.putExtra(Intent.EXTRA_TEXT, "The email body text");       
  7. it.setType("text/plain");       
  8. startActivity(Intent.createChooser(it, "Choose Email Client"));      
  9. Intent it=new Intent(Intent.ACTION_SEND);         
  10. String[] tos={"me@abc.com"};         
  11. String[] ccs={"you@abc.com"};         
  12. it.putExtra(Intent.EXTRA_EMAIL, tos);         
  13. it.putExtra(Intent.EXTRA_CC, ccs);         
  14. it.putExtra(Intent.EXTRA_TEXT, "The email body text");         
  15. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");         
  16. it.setType("message/rfc822");         
  17. startActivity(Intent.createChooser(it, "Choose Email Client"));       
  18. //传送附 件       
  19. Intent it = new Intent(Intent.ACTION_SEND);       
  20. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");       
  21. it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");       
  22. sendIntent.setType("audio/mp3");       
  23. startActivity(Intent.createChooser(it, "Choose Email Client"));    

播放多媒体

Java代码 
  1. Intent it = new Intent(Intent.ACTION_VIEW);       
  2. Uri uri = Uri.parse("file:///sdcard/song.mp3");       
  3. it.setDataAndType(uri, "audio/mp3");       
  4. startActivity(it);      
  5. Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");       
  6. Intent it = new Intent(Intent.ACTION_VIEW, uri);       
  7. startActivity(it);     

Android Market

Java代码 
  1. //寻 找应用      
  2. Uri uri = Uri.parse("market://search?q=pname:pkg_name");       
  3. Intent it = new Intent(Intent.ACTION_VIEW, uri);       
  4. startActivity(it);       
  5. //where pkg_name is the full package path for an application      
  6. //显示应用详细列 表     
  7. Uri uri = Uri.parse("market://details?id=app_id");       
  8. Intent it = new Intent(Intent.ACTION_VIEW, uri);       
  9. startActivity(it);       
  10. //where app_id is the application ID, find the ID        
  11. //by clicking on your application on Market home        
  12. //page, and notice the ID from the address bar    

卸载应用

Java代码 
  1. Uri uri = Uri.fromParts("package", strPackageName, null);        
  2. Intent it = new Intent(Intent.ACTION_DELETE, uri);        
  3. startActivity(it);      

安装应用

Java代码 
  1. Uri uri = Uri.parse("url_of_apk_file");       
  2. Intent it = new Intent(Intent.ACTION_VIEW, uri);       
  3. it.setData(uri);       
  4. it.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);       
  5. it.setClassName("com.android.packageinstaller",       
  6.                 "com.android.packageinstaller.PackageInstallerActivity");       
  7. startActivity(it);        
  8. //make sure the url_of_apk_file is readable for all users    
//需要在AndroidManifest.xml文件中分配相应权限。

转自:

http://hi.baidu.com/cexlong/blog/item/0819be6d6d525ad680cb4a15.html

 

posted @ 2012-03-19 19:41 西蒙福曼 阅读(22) 评论(0) 编辑

一个html5游戏 要求把图片 水平翻转  在网上找了资料要不是看不懂  就是看了没用  不满足需求

图片翻转  可以利用css  IE的滤镜   由于项目不需要兼容IE所以直接无视它 o(∩_∩)o 哈哈

图片翻转有以下几种方式:

css 

    -moz-transform: matrix(-1, 0, 0, 1, 0, 0);   chrome   safari

    -webkit-transform: matrix(-1, 0, 0, 1, 0, 0);  FF

canvas

     1.像素级别的操作  canvas里面每个像素点都有保存rgb跟透明度  ctx.getImageData获取之后把像素点的值进行交换。

     2.画布翻转方式。

      //以右上点为中心 向右翻转画布

   cxt.translate(canvas.width, 0);
     cxt.scale(-1, 1);
        //画图
     cxt.drawImage(img2, canvas.width -  img2.width*2, 0);
      //翻转回来
     cxt.translate(canvas.width, 0);
     cxt.scale(-1, 1);

这种操作既简单又方便

 

posted @ 2011-11-28 15:26 西蒙福曼 阅读(267) 评论(0) 编辑
摘要: 浏览器最核心的部分是渲染引擎(Rendering Engine),我们一般习惯称之为“浏览器内核”,其负责解析网页语法(如HTML、JavaScript)并渲染、展示网页。因此,所谓的浏览器内核 通常也就是指浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解析也有所不同,因 此同一网页在不同的内核浏览器里的渲染、展示效果也可能不同。 l 主流浏览器内核介绍(如图所示)主流浏览器内核分类 浏览器内核种类繁多,商用的加上非商业的免费内核,大约有10款以上甚至更多,不过通常比较常见的大约只有以下4种,下面就简单介绍一下。(1)Trid阅读全文
posted @ 2011-11-04 15:15 西蒙福曼 阅读(31) 评论(0) 编辑
摘要: 从SQL Server中导入/导出 Excel 的基本方法/*=================== 导入/导出 Excel 的基本方法 ===================*/从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:/*===================================================================*/--如果接受数据导入的表已经存在insert into 表 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0阅读全文
posted @ 2011-09-22 10:34 西蒙福曼 阅读(40) 评论(0) 编辑
摘要: http://www.ibm.com/developerworks/cn/linux/l-cn-screen/阅读全文
posted @ 2011-09-21 16:47 西蒙福曼 阅读(14) 评论(0) 编辑
摘要: 用C#写了个服务 该服务就做了一件事 到了一定的时间到数据库执行下 存储过程,本地调试OK,放到服务器后服务启动不了,在我的电脑管理里面查看服务属性把登录那里选成 本地系统账号登录,还是启动不了 最后才看系统日志记录发现报个数据库的异常,修改代码,重新发布还是不行 我是打包安装的 后面改成用命令行来执行就对了C:\Documents and Settings\Administrator>cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>然后在执行阅读全文
posted @ 2011-07-14 14:38 西蒙福曼 阅读(128) 评论(1) 编辑
仅列出标题