android
kaka123ac
专注于android开发
展开
-
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 · 823 阅读 · 0 评论 -
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 阅读 · 0 评论 -
Sqlite中判断表、字段是否存在的方法
sqlite会自动维护一个系统表sqlite_master,该表存储了我们所创建的各个table, view, trigger等等信息。有时数据库升级时,由于等等原因,我们可能需要增加表、字段等等。可以采取以下方法来判断数据库中是否存在某表、字段等等。 select * from sqlite_master where type = 'table' and name =原创 2014-12-24 16:25:22 · 7821 阅读 · 0 评论 -
android开发坑系列一
一般情况都会认为进程被杀掉之后,Activity里的Fragment也会随之被回收。如果是一般正常的操作流程,“打开Acitivity -> Finish Activity”,Activtiy里的Fragment的确会被回收了。 但是如果使用360手机卫士之类的软件,清理类存(实际上是杀死进程),会发现Fragment并没有被回收,而是一直缓存着。在Activit原创 2014-12-24 17:18:27 · 522 阅读 · 0 评论 -
android里Filter的研究
一、概述: 过滤器通过过滤模式来约束数据,过滤操作是通过调用filter(CharSequence)或者filter(CharSequence, android.widget.Filter.FilterListener)这些异步方法来完成的。以上方法一旦被调用,过滤请求就会被递交到请求队列中等待处理,同时该操作会取消那些之前递交的但是还没有被处理的请求。 其工作过程可以简单原创 2014-12-24 15:12:41 · 1096 阅读 · 0 评论 -
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 · 1011 阅读 · 0 评论 -
安卓应用开发常犯错误以及注意点
1.在Fragment中使用AsyncTask时,当onPostExecute()执行完毕后,调用getActivity()可能会为空,需要进行非空判断,需特别注意2.在使用ContentProvider进行数据库查询时,必选先判断Context是否为空,以及Context.getContentResover()是否为空。3.使用Context时,如果不涉及到启动Activity时,尽量使原创 2014-12-24 16:28:56 · 770 阅读 · 0 评论 -
HandlerThread的研究
一、概述: 顾名思义,它实际上仍然是一个Thread,只不过这个Thread比较特殊,它内部包含了一个Looper对象。这个Looper对象可以被用来创建一个Handler,在创建Handler对象之前,必须要先调用该Thread的start()方法。二、实现原理: 1.为什么在构造Handler对象之前,必须得先调用Thread的start()方法?原创 2014-12-24 15:50:37 · 663 阅读 · 0 评论 -
安卓批量打包
通过.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 · 558 阅读 · 0 评论 -
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 · 1972 阅读 · 2 评论 -
Spannable、Spanned、Editable用法及差别
一、接口定义1.Spanned 这是一个针对文本的接口,用来标记在文本的某些范围之类,附属了哪些对象。 public interface Spanned extends CharSequence 该接口是继承了CharSequence,所以在android平台可以直接当做CharSequence来使用,并且增加了很多特殊的文本处理功能。 该接原创 2014-12-24 14:03:56 · 9759 阅读 · 0 评论 -
代码控制EditText是否显示密码样式
有时候我们会碰到这样的需求,在输入框里输入密码时,要求在EditText里的文本可以在密码样式与非密码样式(正常文本)之间进行切换。1.在xml文件里设置成密码样式android:inputType="textPassword"2.在代码里设置显示密码样式与正常文本样式设置显示密码样式:mEditTextPwd.setInputType(InputType.TYPE_CLASS原创 2015-03-03 11:29:33 · 3884 阅读 · 0 评论 -
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 · 2854 阅读 · 2 评论 -
安卓应用程序密码锁的实现
功能:1.应用程序程序中设置了密码锁,每当用户打开应用时,要弹出密码输入界面;2.当用户按住home键,将程序隐在后台而非退出,经过一段时间后,再重新启动,也要弹出密码输入界面;3.当应用在前台的时候,用户按住power电源键,关闭屏幕后,再点亮屏幕,这个时候也要弹出密码输入界面实现方式:1.针对功能1,每次启动应用进入主界面时,判断是否需要弹出密码输入界面;2.关原创 2014-12-24 15:40:40 · 3875 阅读 · 0 评论 -
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 阅读 · 0 评论 -
创建带倒影的图像和渐变的图像
1.创建一个带有倒影的图像2.创建一个渐变的图像原创 2014-12-23 16:11:10 · 551 阅读 · 0 评论 -
在mac或者Linux下通过Vi打开二进制文件
在mac或者Linux下,当我们想要查看.class文件的十六进制文本时,可以采用以下方式1.打开二进制文件时要加参数-b vi -b Test.class2.打开文件后默认是文本格式,用":%!xxd"可以切换到十六进制编辑 :%!xdd原创 2014-12-23 16:20:33 · 3144 阅读 · 0 评论 -
监听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 阅读 · 0 评论 -
获取apk的签名MD5值
我们在发布应用的时候,需要通过keystore文件对apk包进行签名,才能发布到市场上。但是,由于apk包很容易被反编译,然后重新签名之后,再发布到市场上。所以应用可以在启动的时候,获取当前apk包本身的签名md5值,与自己的的正式的签名文件的md5值比对,如果不一致,可以判定该apk包是盗版的,可能其他人反编译后重新打包上传,进而给出提示等等。public static String get原创 2014-12-23 16:03:58 · 3159 阅读 · 0 评论 -
在mac上adb怎样连接手机设备
小米手机在mac上,adb识别不到设备,Eclipse的DDMS连接不上设备,这样手机就不能用来开发了。实际上,只有在Windows上才需要安装USB驱动程序,在Linux、MAC OS上并不需要。识别不到小米手机是因为adb不知道手机的USB VendorID。用IORegistryExplorer查看连接上的USB设备的信息。 选择IOUSB,找到相应的设备,可以查看到小米手机原创 2014-12-23 16:48:30 · 1616 阅读 · 0 评论 -
CharSequence与String
问题描述: 在android平台上,有很多text values类型为CharSequence,如TextView等大部分控件的setText()方法,其参数都为CharSequence类型。 1.为什么要用CharSequence而不使用String,相对String而言,它的好处是什么? 2.两者的区别在哪里?定义:1.关于CharSe原创 2014-12-24 11:53:28 · 3610 阅读 · 0 评论 -
关于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 · 972 阅读 · 0 评论 -
Selection用法
功能: 1.用来操作文本里的光标; 2.用来选中文本里的内容; 3.光标实质上是文本选中的一个特例,如果选中文本的start、end值是一样的,则会显示成一个光标;接口: 其常用到的接口有: final static void selectAll(Spannable text); //全选原创 2014-12-24 14:28:25 · 2181 阅读 · 0 评论 -
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 · 570 阅读 · 0 评论 -
内部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 · 659 阅读 · 0 评论 -
WebView常见问题及解决方案
目前HTML5发展快速,很多native app都会适当地嵌入网页,以此来适应多变的需求变化。但是android的WebView默认支持的功能很弱,很多都需要自定义,才能实现我们想要的效果。并且WebView在不同的版本下,均有不同程度的bug。总结通常使用WebView需要注意的地方如下:1.重写WebViewClient protected ProgressBa原创 2014-12-24 16:16:16 · 3972 阅读 · 0 评论 -
获取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 · 4059 阅读 · 0 评论