- 博客(35)
- 资源 (5)
- 收藏
- 关注
原创 获取WebView里的网页文本内容
获取WebView里的网页文本内容,可以采用如下方法:public class ComJSInterface { public void loadHtmlContent(String content) { Log.d("comJs", "html:" + content); }}mWebView.addJavascriptInterface(new ComJSIn
2015-03-17 17:26:18 4065
原创 代码控制EditText是否显示密码样式
有时候我们会碰到这样的需求,在输入框里输入密码时,要求在EditText里的文本可以在密码样式与非密码样式(正常文本)之间进行切换。1.在xml文件里设置成密码样式android:inputType="textPassword"2.在代码里设置显示密码样式与正常文本样式设置显示密码样式:mEditTextPwd.setInputType(InputType.TYPE_CLASS
2015-03-03 11:29:33 3885
转载 andorid 5.0 permission出错 INSTALL_FAILED_DUPLICATE_PERMISSION
转载自:http://blog.csdn.net/szu_tanglanting/article/details/43194169在安装的时候出现失败: 这个权限应该是用而不是声明 声明权限只能有一个app声明,如果有多个app声明一个权限,那它必须是签名也一样的。这样做的好处:保证世界范围内以签名为单位的声明permission
2015-01-29 15:12:23 824
原创 WebView与js交互遇到的问题
1.在WebView中调用js,在4.4(target = 19)之前,只有一种方法: 调用js方法 test() webView.loadUrl("javascript:test()"); 注意,必须在主线程中调用,如果在非UI线程调用,可能会出错。所以,一般这样调用。 handler.post( new Runnable
2015-01-19 11:51:31 1973 2
原创 PopupWindow使用
一.PopWindow构成3要素1.contentView window的内容2.width window的宽度3.height window的高度 其构造方法: public PopupWindow(View contentView, int width, int height, boolean focusable);
2014-12-25 16:14:14 885
原创 android开发坑系列一
一般情况都会认为进程被杀掉之后,Activity里的Fragment也会随之被回收。如果是一般正常的操作流程,“打开Acitivity -> Finish Activity”,Activtiy里的Fragment的确会被回收了。 但是如果使用360手机卫士之类的软件,清理类存(实际上是杀死进程),会发现Fragment并没有被回收,而是一直缓存着。在Activit
2014-12-24 17:18:27 522
原创 安卓批量打包
通过.apk打包的方式,本质上对apk文件进行反编译,修改AndroidManifest.xml文件后,再重新打包,其中使用的开源拆包工具Apktook(https://code.google.com/p/android-apktool)步骤:1.执行java -jar apktool.jar d -s -f xxx.apk temp2.替换或者添加AndroidManifest.xm
2014-12-24 16:56:45 559
原创 android平台上AES,DES加解密及问题
在使用java进行AES加密的时候,会用到如下方法:SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");但是在android4.2以上进行加密、解密时,会报类似badPadding的异常,但是把该代码替换成一下方法则一切都OK。SecureRandom sr = SecureRandom.getInstance("SHA
2014-12-24 16:46:10 1013
原创 Bitmap createScaleBitmap()需要注意点
我们在创建Bitmap对象的时候,可能需要源于原来的Bitmap,然后做一些修改创建一个新的Bitmap,如以下方法:public static Bitmap createBitmap(Bitmap src);public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int
2014-12-24 16:38:57 2855 2
原创 安卓应用开发常犯错误以及注意点
1.在Fragment中使用AsyncTask时,当onPostExecute()执行完毕后,调用getActivity()可能会为空,需要进行非空判断,需特别注意2.在使用ContentProvider进行数据库查询时,必选先判断Context是否为空,以及Context.getContentResover()是否为空。3.使用Context时,如果不涉及到启动Activity时,尽量使
2014-12-24 16:28:56 770
原创 Sqlite中判断表、字段是否存在的方法
sqlite会自动维护一个系统表sqlite_master,该表存储了我们所创建的各个table, view, trigger等等信息。有时数据库升级时,由于等等原因,我们可能需要增加表、字段等等。可以采取以下方法来判断数据库中是否存在某表、字段等等。 select * from sqlite_master where type = 'table' and name =
2014-12-24 16:25:22 7828
原创 WebView常见问题及解决方案
目前HTML5发展快速,很多native app都会适当地嵌入网页,以此来适应多变的需求变化。但是android的WebView默认支持的功能很弱,很多都需要自定义,才能实现我们想要的效果。并且WebView在不同的版本下,均有不同程度的bug。总结通常使用WebView需要注意的地方如下:1.重写WebViewClient protected ProgressBa
2014-12-24 16:16:16 3988
原创 内部Handler类引起的泄露
如果在Activity中定义了一个内部Handler类,会出现一个内存泄露警告:This Handler class should be static or leaks might occur…In Android, Handler classes should be static or leaks might occur. Messages enqueued on the applica
2014-12-24 16:13:30 661
原创 Message, MessageQueue, Handler, Looper内部构造
一、Message1.Field public int what; //message code public int arg1; public int arg2; public Object obj; long when;
2014-12-24 15:53:43 572
原创 HandlerThread的研究
一、概述: 顾名思义,它实际上仍然是一个Thread,只不过这个Thread比较特殊,它内部包含了一个Looper对象。这个Looper对象可以被用来创建一个Handler,在创建Handler对象之前,必须要先调用该Thread的start()方法。二、实现原理: 1.为什么在构造Handler对象之前,必须得先调用Thread的start()方法?
2014-12-24 15:50:37 664
原创 安卓应用程序密码锁的实现
功能:1.应用程序程序中设置了密码锁,每当用户打开应用时,要弹出密码输入界面;2.当用户按住home键,将程序隐在后台而非退出,经过一段时间后,再重新启动,也要弹出密码输入界面;3.当应用在前台的时候,用户按住power电源键,关闭屏幕后,再点亮屏幕,这个时候也要弹出密码输入界面实现方式:1.针对功能1,每次启动应用进入主界面时,判断是否需要弹出密码输入界面;2.关
2014-12-24 15:40:40 3882
原创 android里Filter的研究
一、概述: 过滤器通过过滤模式来约束数据,过滤操作是通过调用filter(CharSequence)或者filter(CharSequence, android.widget.Filter.FilterListener)这些异步方法来完成的。以上方法一旦被调用,过滤请求就会被递交到请求队列中等待处理,同时该操作会取消那些之前递交的但是还没有被处理的请求。 其工作过程可以简单
2014-12-24 15:12:41 1098
原创 Selection用法
功能: 1.用来操作文本里的光标; 2.用来选中文本里的内容; 3.光标实质上是文本选中的一个特例,如果选中文本的start、end值是一样的,则会显示成一个光标;接口: 其常用到的接口有: final static void selectAll(Spannable text); //全选
2014-12-24 14:28:25 2191
原创 Spannable、Spanned、Editable用法及差别
一、接口定义1.Spanned 这是一个针对文本的接口,用来标记在文本的某些范围之类,附属了哪些对象。 public interface Spanned extends CharSequence 该接口是继承了CharSequence,所以在android平台可以直接当做CharSequence来使用,并且增加了很多特殊的文本处理功能。 该接
2014-12-24 14:03:56 9779
原创 关于EditText中的TextWatcher监听
功能:1.监听EditText里输入内容的变化;2.根据实时输入的文字内容,做出输入自动提示效果接口方法:TextWatcher myWatcher = newTextWatcher(){@Overridepublic void onTextChanged(CharSequence s,int start,int before,int c
2014-12-24 11:56:18 974
原创 CharSequence与String
问题描述: 在android平台上,有很多text values类型为CharSequence,如TextView等大部分控件的setText()方法,其参数都为CharSequence类型。 1.为什么要用CharSequence而不使用String,相对String而言,它的好处是什么? 2.两者的区别在哪里?定义:1.关于CharSe
2014-12-24 11:53:28 3618
原创 INSTALL_PARSE_FAILED_NO_CERTIFICATES异常
最近在一次发布apk包的时候,发现在酷派手机的部分型号下安装apk包失败,报出如下错误: INSTALL_PARSE_FAILED_NO_CERTIFICATES 查了很多资料,原来发现,是对apk包进行签名时采用的jdk版本是1.7,而在1.7版本下签名的apk包都会出现这个问题,故而切换成jdk1.6,所有问题都解决。可参考http://code.google.co
2014-12-24 11:04:12 823
原创 在mac上adb怎样连接手机设备
小米手机在mac上,adb识别不到设备,Eclipse的DDMS连接不上设备,这样手机就不能用来开发了。实际上,只有在Windows上才需要安装USB驱动程序,在Linux、MAC OS上并不需要。识别不到小米手机是因为adb不知道手机的USB VendorID。用IORegistryExplorer查看连接上的USB设备的信息。 选择IOUSB,找到相应的设备,可以查看到小米手机
2014-12-23 16:48:30 1620
原创 JAVA虚拟机常用参数
-verbose:gc 在虚拟机发生内存回收时,在输出设备上显示信息。改参数用来监视虚拟机内存回收的情况。-version 显示可运行的虚拟机版本信息然后退出。java -X常用选项 在命令窗口,输入java -X,可看到全部参数-Xms 设置初始堆的大小-X
2014-12-23 16:22:48 689
原创 在mac或者Linux下通过Vi打开二进制文件
在mac或者Linux下,当我们想要查看.class文件的十六进制文本时,可以采用以下方式1.打开二进制文件时要加参数-b vi -b Test.class2.打开文件后默认是文本格式,用":%!xxd"可以切换到十六进制编辑 :%!xdd
2014-12-23 16:20:33 3147
原创 获取apk的签名MD5值
我们在发布应用的时候,需要通过keystore文件对apk包进行签名,才能发布到市场上。但是,由于apk包很容易被反编译,然后重新签名之后,再发布到市场上。所以应用可以在启动的时候,获取当前apk包本身的签名md5值,与自己的的正式的签名文件的md5值比对,如果不一致,可以判定该apk包是盗版的,可能其他人反编译后重新打包上传,进而给出提示等等。public static String get
2014-12-23 16:03:58 3162
原创 监听Home键点击事件
系统在处理Home键时,会发送一个广播出去:Intent.ACTION_CLOASE_SYSTEM_DIALOGS.注册一个广播接收器,就可监听到用户按了home键。 IntentFilter filter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); registerReceiver(
2014-12-23 15:54:04 644
原创 JDBC连接中的Class.forName()解惑
有过JDBC连接经验的朋友都知道,连接时首先需要加载数据库驱动,一般都是用Class.forName("xxx.xxx.xxx")来加载的。Class描述的是类信息,forName()是Class的静态方法,用来将字符串指定的类动态加载进来,它返回的是一个Class对象,查看API知道其方法为 Class forName(String className); c
2009-11-06 12:58:00 791
转载 java中的字符集编码
Java号称对Unicode提供天然的支持,这话在很久很久以前就已经是假的了(不过曾经是真的),实际上,到JDK5.0为止,Java才算刚刚跟上Unicode的脚步,开始提供对增补字符的支持。 现在的Unicode码空间为U+0000到U+10FFFF,一共1114112个码位,其中只有1,112,064 个码位是合法的(我来替你做算术,有2048个码位不合法),但并不是说现在的Un
2009-11-04 10:11:00 556
转载 jsp简单的验证码
1.首先在jsp页面中生成验证码图片,image.jsp <%! Color getRandColor(int fc,int bc){//给定范围获得随机颜色 Random random = new Random(); if(fc>255) fc=255; if(bc>255) bc=255;
2009-11-02 14:02:00 748
原创 java读取.properties文件
通常,在实际项目中,为了便于配置管理,我们需要将一些配置管理信息存储在.properties文件中,然后直接从中读取,这样就避免了很多硬编码。下面,通过一个例子,详细讲解如何读取.properties文件的数据。 1.建立一个包config,专门存放.properties等配置文件,在config包下建一个文件a.properties,为了便于测试,在a.properti
2009-10-26 13:48:00 776
转载 java里的类型Type
有时候,我们需要得到泛型的具体类信息。如操作DAO时: public abstract class BaseDaoImpl { @SuppressWarnings("unchecked") public BaseDaoImpl() { this.persistentClass = (Class) ((ParameterizedType) getClass().getG
2009-08-21 17:18:00 7654
原创 乱码过滤器
大家都知道,在jsp里乱码是最让人讨厌的东西,有些乱码出来的莫名其妙,给开发带来很大困扰,但搞一个乱码过滤器就一切都解决了,配置好之后,你并不需要在页面里进行转码之类的。 首先,写一个过滤器类,如下: package filter;import java.io.IOException;import javax.servlet.Filter;import javax.s
2009-08-04 10:31:00 1211
原创 tomcat数据库连接池配置
最近研究了一下tomcat数据库连接池的配置,花了很长时间,走了不少弯路,总是冒出一些莫名其妙的异常,现将配置简略地概述一下。我采用的数据库是mysql。 1. 将数据库连接驱动包mysql-connector-java-5.0.2-beta-bin.jar放到tomcat安装目录中的lib中。 2. 在tomcat的安装目录下的server.xml中配置数据源。在s
2009-07-31 15:43:00 775
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人