android
文章平均质量分 85
ttdevs
这个作者很懒,什么都没留下…
展开
-
Apk静默安装之调用系统隐藏API
文章目录0x00 问题0x01 调用系统隐藏API0x02 SystemHideAPISystemHideAPI.javaAndroid.mkBuildclasses.jar0x03 总结0xFF 参考0x00 问题何为隐藏的API?简单来说就是在源码中被用 @hide 标记的代码块,比如常量,方法等。以常用的 ActivityManager.java 为例,里面就有大量的隐藏API:@S...原创 2019-09-03 16:46:02 · 523 阅读 · 0 评论 -
android你可能要用到的自定义View分享
Indicator View0x00 main进步、创新都是在不断变化的需求中诞生的。 -- By ttdevs这不,新的需求又来了。废话不多说,先上设计稿:简单分析上图包括三部分:最上面的类Progressbar,中间两个指示盘和最下面的指示盘。第一个类Progressbar我们项目之前有实现过,但是和这个需求有一些差异,因此决定重新实现一遍。另外原创 2016-06-19 14:46:55 · 2530 阅读 · 2 评论 -
用support annotation替代enum
一次演讲中听到android中使用enum可能会造成很大的性能问题。开始我是怀疑的。原创 2016-04-22 18:25:52 · 923 阅读 · 0 评论 -
Android Studio 2.0 NDK开发环境搭建
Android Studio 2.0 NDK开发环境搭建原创 2016-04-17 23:00:53 · 4058 阅读 · 14 评论 -
从浏览器中打开我们的应用
有时候你会发现,用Android系统自带的浏览器(chrome)打开一个web页面,如果安装了相应的App,就会自动打开这个App并进入具体的界面中。原创 2016-05-08 23:55:10 · 6302 阅读 · 2 评论 -
Android Studio NDK环境搭建
Android Studio NDK环境搭建原创 2016-03-06 18:11:08 · 1564 阅读 · 2 评论 -
Android本地数据安全尝试(中)——Conceal
上一篇我们提到使用SQLCipher对本地的数据进行加密。在保证数据安全的同时,我们又引入了一些新的问题,比如安装包体积的增加,数据存储过程中耗时增加,数据加密的粒度不可控等等。如果你接受不了这些问题,那我们还需寻找其他的加密方法。这里给大家推荐Conceal原创 2016-02-27 09:38:26 · 4066 阅读 · 5 评论 -
Android本地数据安全尝试(上)——SQLCipher
从今天开始,又开始写博客啦啦啦啦。话说基本上一年多没好好写博客了。回想起来,和之前写博客时相比,还是差距好大。好吧,废话不说了,进入正题。首先,开篇打算跟大家分享下你遇到的或者将来可能遇到的问题:本地数据的安全问题。多数情况,我们可能没有去考虑app的本地数据安全问题,一来公司没这样的要求,二来我们可能也没有非常需要保密的数据。那现在思考一下为将来做储备。原创 2016-02-19 22:25:33 · 4441 阅读 · 1 评论 -
Android本地数据安全尝试(下)——JNI
Android本地数据安全尝试(下)——JNI原创 2016-03-19 15:45:21 · 1928 阅读 · 1 评论 -
让RecyclerView支持加载更多(Endless RecyclerView)
在Android的Support包中我们有很多新的组件可以使用,比如代替ListView的RecyclerView。使用RecyclerView和SwipeRefreshLayout组合,我们可以实现很酷炫的下拉刷新的功能。但是,事情总不是那么美好,有了下拉刷新,却找不到上拉加载更多(我们已经习惯了PullToRefresh),最终还是放弃了使用RecyclerView。现在看来,自己实在是太懒了。好了,今天就让我们的RecyclerView支持加载更多。原创 2015-09-26 10:37:37 · 5258 阅读 · 1 评论 -
android网络开源框架volley(五)——volley的一些细节
最近又把volley拿出来整理了下。之前没有遇到过的一些小问题又来了,在此记录下:1、HttpUrlConnection DELETE 方式无法添加body的问题:java.net.ProtocolException: DELETE does not support writing2、关于(修改)volley的缓存原创 2014-10-19 20:47:02 · 5247 阅读 · 1 评论 -
android Toobar的一个简单封装
现有的APP尝试向Material Design靠齐,开始使用Toolbar代替之前的ActionBar。Toolbar和ActionBar的直观区别就是需要我们自己将ToolBar加到自己的布局文件中。目前的情况是:在我们的现有项目上改动,多数的Activity都是继承一个BaseActivity。为了用最小的代价达到目的,简单的思考之后,做了如下的改动:/** * 带ToolBar的原创 2015-04-06 22:42:44 · 1774 阅读 · 0 评论 -
Mac下对APK进行反编译
window下进行APK的反编译非常简单,有很多集成工具,选择安装包然后就可以一健反编译得到资源文件和源码的jar,然后使用JD-GUI即可查看源码,使用文本编辑器查看资源文件等。换了MAC之后至今未发现啥给力的反编译工具,没办法,自己整理下反编译的流程,分享之其实,反编译工具集最终也是使用我们常用的几个组建来完成APK的反编译,分别是apktool:提取APK中各种资源文件,如图片、布局、各种资源等;dex2jar:将APK中classes.dex转成jar文件,查看源码。原创 2014-12-31 18:33:12 · 6985 阅读 · 1 评论 -
内存泄漏相关内容总结(上)
好久没有认真的写博客了,草稿箱中静静躺着好几篇,但总是不能把他们写完,一直没有写的心情把,罪过...废话一句说完,进入今天的正题:内存泄露的相关知识。一、内存问题很多时候我们是需要查看自己的应用内存占用情况,比如当出现闪退,异常退出时:1、界面内存占用:比如我们的启动画面,如果出现OOM的问题,这个时候可以通过差看内存情况,如果确是内存占用比较大就可以考虑做相应优化2、内存原创 2014-12-14 21:02:51 · 1563 阅读 · 0 评论 -
android对app进行代码混淆
接到一个新的任务,对现有项目进行代码混淆。之前对混淆有过一些了解,但是不够详细和完整,知道有些东西混淆起来还是比较棘手的。不过幸好目前的项目不是太复杂(针对混淆这块来说),提前完成~~现总结之。原创 2014-09-28 23:40:12 · 3439 阅读 · 0 评论 -
Retrofit初探——请求参数
0x00 请求参数常见的Http请求,除了指定的请求地址,很多时候我们还需要加上一些请求参数,这些参数可能是固定的,也可能是动态添加的。在Retrofit中,我们该如何处理呢?这里以GET方式中添加请求参数为例。原创 2016-07-24 16:33:38 · 3814 阅读 · 0 评论 -
Retrofit初探
Retrofit初探0x00 Retrofit很久以前就计划要研究一下,但是一直拖到现在,不知道是因为优先级放的比较低还是因为拖延症。总只,现在要完整的看一遍。由于这个已经出来很久了,所以我就直接选择了Refrofit2,没有去关注Refrofit1,等看完Refrofit2有时间的话再去看看Refrofit1,看看它们的变迁。好了,先从Refrofit2开始吧。原创 2016-07-10 12:23:54 · 905 阅读 · 0 评论 -
NMS Toast
0x00 NMS ToastToast.makeText(Context, "Toast message content.", Toast.LENGTH_SHORT).show();以下代码分析基于Android 8.1.00x01 ToastToast类只有500多行,逻辑比较简单,主要有三部分组成: Toast,INotificationManager和TN。Toast类负责构造T...原创 2019-06-28 12:28:45 · 257 阅读 · 0 评论 -
RockChip主板系统签名说明
简介线下设备使用的都是RockChip芯片的主板,我们要求最终运行的App都有系统权限,因此最终签名都会使用系统签名。之前都是打包完成之后再手动签名,现改成打包的时候直接使用RockChip的签名。操作手动签名先生成apk,然后使用 signapk.jar 签名:java -jar signapk.jar platform.x509.pem platform.pk8 i...原创 2018-06-13 17:59:18 · 1441 阅读 · 1 评论 -
Retrofit初探——同步与异步请求
0x00 请求的形式我们正常的网络请求有两种形式:同步方式和异步方式。所谓同步方式,是指我们发出网络请求之后当前线程被阻塞,直到请求的结果(成功或者失败)到来,才继续向下执行。所谓异步,是指我们的网络请求发出之后,不必等待请求结果的到来,就可以去做其他的事情,当请求结果到来时,我们在做处理结果的动作。当然无论是同步还是异步,最终都是同步请求。0x01 同步请求Retrofit的同步请求...原创 2016-07-31 12:58:58 · 10821 阅读 · 3 评论 -
Nexus3配合Gradle搭建私有仓库
Nexus3 私有仓库搭建。将自己的代码通过gradle上传到使用nexus3搭建的私有仓库。原创 2017-11-05 22:30:20 · 2122 阅读 · 0 评论 -
ThreadLocal
0x00 ThreadLocal查看Android Message源码的时候,看到一个类: ThreadLocal。之前没注意过这个类,看的有点迷糊,这里对其做一下总结。原创 2017-05-07 23:53:32 · 476 阅读 · 0 评论 -
TextWatcher中的参数
TextWatcher中的参数beforeTextChanged@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {} This method is called to notify you that, within s, the count原创 2017-04-23 23:32:00 · 740 阅读 · 0 评论 -
Facebook Fresco体验 (一)
Fresco 一个强大的Android图片显示系统。图片的加载和显示交由它负责,我们就不需要关心了。这两句足以说明他的牛逼——有几个插件感这么自己的称自己为System的。当然,Facebook出品,必属精品。原创 2015-04-10 17:55:37 · 3176 阅读 · 0 评论 -
使用Websocket实现消息推送(上)
WebSocket一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并被RFC7936所补充规范,WebSocketAPI被W3C定为标准。原创 2016-08-26 23:13:56 · 35873 阅读 · 2 评论 -
java.lang.NumberFormatException: Invalid float: "55,4" 分析
java.lang.NumberFormatException: Invalid float: "55,4"原创 2017-04-08 08:50:33 · 3023 阅读 · 0 评论 -
Android闹钟遇到的那些坑
做过闹钟的话你就知道这中间有多少坑了。第一次做闹钟程序是在2012年,那时候android最新版本是2.2,2.3发布在即,做了一个整点提醒的小工具,记得很清楚,主要的问题是锁屏之后闹钟不能准时被唤醒,总会晚那么几秒钟,后来没办法把闹钟提前设置几秒钟。不过那时候环境还好,没有遇到攻克不了的问题,重启也可以唤起闹钟的。但是随着android版本的进化,开发者节操的丢失,问题就越来越难做了。原创 2017-02-24 18:32:29 · 4774 阅读 · 2 评论 -
Layout inflate遇到的坑
Layout inflate遇到的坑原创 2017-02-12 22:34:30 · 814 阅读 · 0 评论 -
MediaPlayer单曲循环不卡顿
需求单曲循环播放歌曲,要求过度连贯,听不出来卡顿感觉。0x01 解决思路MediaPlayer对于常见的音乐播放,我们第一时间想到的应该就是它,它有一个方法MediaPlayer.setLooping(true);就是用来进行单曲循环的。但是很遗憾,如果你简单的这么做,上面的目的是达不到的,会出现上一遍结束出现一个明显的停止才开始播放下一次的现象。原创 2016-12-11 12:23:02 · 3902 阅读 · 5 评论 -
Data Binding给Button设置背景无效
0x00 问题通过Data Binding给Button设置背景无效。 具体表现为给Button设置不同的背景图片,但是无论怎样背景只会显示不同的颜色,而不是显示期望的图片。0x01 分析由于对Data Binding不是很熟悉,所以很奇怪为什么。不管怎样先打印下这个资源的值,发现在布局文件中打印资源值是有的。根据经验,设置不同的背景图片,背景会显示不同的颜色,那这个值可能被解析成了颜色值。原创 2016-11-15 16:13:30 · 1447 阅读 · 0 评论 -
Android通过Intent传递数据
当我们需要对JVM中的java对象进行转储时,就需要将其转化成二进制序列,然后才能存储到外部。这个序列中保存了java对象的类型,数据,数据类型等。当需要的时候,再对存储的二进制序列进行反序列化,即可将其还原。常见的场景比如:存储JVM中对象,通过Socket传递java对象,RMI等等。原创 2016-08-08 17:20:08 · 3118 阅读 · 4 评论 -
各种小记录
1、sqlite中处理单引号:所有单引号换成双单引号,如:content.replace("'", "''");这样是不行的,临时抱佛脚,换成了带"?"的通配形式2、SimpleCursorAdapter 的 notifyDataSetChanged无效:可以使用SimpleCursorAdapter 的changeCursor方法:http://stackov原创 2013-10-08 15:37:15 · 3493 阅读 · 2 评论 -
随心de面试总结
一、activity的启动方式,处理activity的退出二、广播的两种注册方式,优先级等(包名)三、对android的见解,android的架构四、popwindow是否可以被其他应用干掉五、生命周期:activity,fragment,service,BoradcastReceiver六、FC导致的原因,ANR,Thread.setD原创 2014-05-29 13:20:18 · 1676 阅读 · 0 评论 -
android Notification分析——你可能遇到的各种问题
通知的使用的各种总结有不少,csdn上有不少大牛的总结,有一个感觉写的非常到位,可惜忘记了,试着找了下,没有找到。在此就把最近遇到的各种问题拿出来与大家分享。原创 2014-08-21 14:43:32 · 11350 阅读 · 5 评论 -
Toast分析——实现自己的Toast
需求:android 4.0以后,新增了一个功能:关闭应用发出的通知、Toast等。具体操作为:打开应用安装列表,找到要屏蔽的应用(长按通知,点击弹出的"应用信息",即可跳到应用信息界面),把允许推送消息(显示通知)取消即可。产品发现这个功能之后,果断要求屏蔽这个功能。能力有限,不知道如何破屏蔽通知,自己实现一个Toast的还是小case的~~原创 2014-08-09 17:43:05 · 4814 阅读 · 9 评论 -
android SQLite数据库使用总结之(二)创建自己的数据库
1、创建自己的数据库大多数情况,我们还是需要自己去维护一个数据库,常见的包括数据库的创建,升级,销毁等操作。我们创建SQLiteOpenHelper的子类,重写他的onCreate(), onUpgrade() 或者 onOpen()方法,对数据库进行管理。如下:package com.ttdevs.db;import android.content.Context;import原创 2013-09-24 20:35:13 · 3075 阅读 · 0 评论 -
android SQLite数据库使用总结之(一)从加载本地数据库开始
好久就写了,但是一直拖拖拉拉的,在草稿箱里放了两个星期还没写完,想想这样托下去又要废掉了,还是分开来吧,写多少是多少。android的SQLite数据库简单使用一段时间了,现在想抽些时间总结下,不然总感觉很乱1、先说一个工具:SQLiteExpert原创 2013-09-24 20:32:21 · 4695 阅读 · 0 评论 -
自定义listview,带按钮,多选框,处理item事件
产品中要用到这个效果:listitem中带多选框,用来删除;有按钮,处理相应事件;item的click处理跳转。同事说这个设计操作起来很二,有点反社会,再加个图片和可以展开就反人类了。不管怎样,产品说了,我们就得做。思路:item上有控件,就不能使item失去焦点,因此,各种button,checkbox就不能去获取焦点,但是可以click。其实主要就这些,其他也没多少东西。原创 2013-09-14 10:57:05 · 4181 阅读 · 0 评论 -
记录下,jfeinstein10的SlidingMenu环境的部署
github上的jfeinstein10的SlidingMenu就不多说了,地址:https://github.com/jfeinstein10/SlidingMenu,下面记录下如何在eclipse上的部署:原创 2013-09-07 10:55:59 · 2012 阅读 · 0 评论 -
又遇一新问题,通过context启动服务和创建对话框
new StartHandler(StartActivity.this,getApplicationContext());传两个Context过去,并不是随便用哪个都可以创建dialog和启动服务的,在此标记下,菜鸟还不知道其中缘由原创 2013-08-25 21:20:07 · 1389 阅读 · 4 评论