![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android-开发
文章平均质量分 84
ok406lhq
哦jio撒嘛
展开
-
git commit -m命令扩展:多行注释
在命令行上使用git时,你可能已经使用了消息标志(-m)。它允许开发人员在调用git commit时携带注释一起提交消息。git commit -m "my commit message"但是这种方式只能写一行的注释,如果你想要对commit的内容进行详细的讲解,以便仔细检查提交的文件,那你可能需要写多行注释,这个命令就不适用了。今天,我了解到git commit命令接受多个消息标志,也就是多行注释????事实证明,你可以-m多次使用该选项。git文档包括以下段落:即 “如果给出了多个−m选项原创 2020-07-10 18:49:30 · 2832 阅读 · 2 评论 -
Android应用开发之统计App时长
闲谈好久没更新了,前两个月就定了标题,现在才开始动手写。其实之前觉得这种获取App累积时长的方法(以下内容会介绍到)不唯一,可能有很多种,所以想收集多点资料,后来看到腾讯和360都是这么实现的,那么现在就开始介绍一下这个需求。相信做游戏sdk开发的最近经常有这个需求,为什么是游戏sdk开发需要?而且为什么是最近?首先回答第一个问题,这个需求主要是要限制用户对于app的使用时长,一般较为常见的是限制游戏游玩时长,其次,很少有Android应用有统计使用时长这一个需求。第二个问题,为什么是最近?没.原创 2020-07-08 18:40:12 · 4146 阅读 · 1 评论 -
Android全面检测设备是否模拟器
前言前段时间工作有个需求,要求检测App是否在模拟器环境下运行,就像在有些手机游戏上可以看到这个功能乍一看蛮简单的,后来我查了一下资料,然后头都大了······ 这多亏了国内pc端模拟器的发展,现在市面上的模拟器越来越多,也越来越“逼真”了,模拟器和真机的区别在逐步缩小,这就使得模拟器的检测存在偏差,不管有多小,偏差总是会存在的,如何降低这种偏差值,就是这篇文章像讨论的内容。先来看一下我...原创 2020-03-27 18:01:19 · 5481 阅读 · 1 评论 -
把Android logcat信息显示在你的手机
前言年前有个想法,过去后端调试接口的时候,需要对接网络请求的各个参数,每次要调试时的流程都是(对于Android客户端的我来说):打开Android Studio → 连接设备或模拟器 → 开启logcat → 日志筛选 …这样确实有点麻烦,有没有一种方式把网络请求和返回的日志全部打到Demo App里边显示?答案当然是有!上个demo图:由于涉及公司接口的安全性,这里就不把具体的...原创 2020-03-25 15:17:09 · 1293 阅读 · 0 评论 -
当你输入"apktool b -f [回编译文件] -o [输入的apk文件]"命令后
下面的记录是在我敲入以下命令后遇到的错误:(相信学习逆向的同学一定不会生疏:)apktool b -f E:\decode -o E:\Decompile.apk 回编译出现文件名或扩展名太长错误解决方案:减少apktool.yml文件中doNotCompress不加密的文件回编译出现“class not find brut.androidlib.meta.MetaInfo...原创 2019-11-22 11:36:15 · 1976 阅读 · 2 评论 -
做一个适配Android8.0以上版本的悬浮窗
突然有了个悬浮球的需求,赶忙去网上搜索了一下,发现大部分都是停留在几年前,为了适配Android 6.0版本甚至6.0以下实现的代码。跑了一遍之后出现了不少问题,首先第一个:android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity...原创 2019-10-22 15:28:07 · 3664 阅读 · 1 评论 -
安卓设计模式の观察者模式
观察者模式是一种使用频率非常高的设计模式,最常用的地方就是订阅-发布系统。这个模式的重要作用就是将观察者和被观察者解耦,使他们之间的依赖更小甚至没有。定义定义对象一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于他的对象都会得到通知并被自动更新。模式的使用场景关联行为场景,这个关联是可拆分的。将观察者和被观察者封装在不同的对象中,可以各可以各自独立的变化。原创 2017-12-05 11:29:06 · 624 阅读 · 0 评论 -
Failed to push the item null解决方法
当我们在Android Studio中向Android Device Monitor中的文件夹中传入文件时,可能会报出这个错误:这是我向sdcard/emulated/0中传入文件时出现的错误,当然,你要先得打开该文件的目录结构。可能会出现点击文件夹展开不了子文件的情况,这时候,你就到adb.exe所在的目录,打开命令行,输入adb root即可刷新文件权限,这时候你就能看到子文件了。原创 2017-12-16 10:21:39 · 3655 阅读 · 0 评论 -
Android3.0升级后出现ButterKnife失效报错的问题解决
Error:Execution failed for task ':reading_routine:javaPreCompileDebug'.> Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to co...原创 2018-03-08 19:03:58 · 1475 阅读 · 0 评论 -
安卓设计模式の装饰者模式
Android设计模式源码解析之装饰者模式1. 模式介绍模式的定义装饰模式也叫做包装模式,是结构型设计模式之一。目的是为了给一个类或对象增加行为。可以是继承的一种替代。 装饰模式也很好理解,比如一个人,给他装上火箭就能上天了,装上潜水服就能下海了,但本身还是个人,人没有任何变化。装饰者模式的的定义是动态地给一个对象添加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。原创 2017-12-05 11:16:44 · 625 阅读 · 0 评论 -
安卓设计模式の代理模式
Android设计模式源码解析之Proxy模式 Binder中的代理模式再说Binder中的代理模式之前,我们需要先看看代理模式的简单实现,这一部分内容采用了《JAVA与模式》之代理模式这篇文章中的代码示例和uml类图。1. 模式介绍代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。模式的使用场景就是一个人或者机构代表另一个人或者机构采取行动。原创 2017-12-05 10:43:14 · 636 阅读 · 0 评论 -
公共技术点之面向对象六大原则
在工作初期,我们可能会经常会有这样的感觉,自己的代码接口设计混乱、代码耦合较为严重、一个类的代码过多等等,自己回头看的时候都觉得汗颜。再看那些知名的开源库,它们大多有着整洁的代码、清晰简单的接口、职责单一的类,这个时候我们通常会捶胸顿足而感叹:什么时候老夫才能写出这样的代码! 在做开发的这些年中,我渐渐的感觉到,其实国内的一些初、中级工程师写的东西不规范或者说不够清晰的原因是缺乏一些指导原则。转载 2017-12-05 10:41:02 · 701 阅读 · 0 评论 -
安卓设计模式の外观模式
Android设计模式源码解析之外观模式(Facade)1. 模式介绍模式的定义外观模式(也成为门面模式)要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。它提供一个高层次的接口,使得子系统更易于使用。模式的使用场景在设计初期阶段,将不同的两个层分离;在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,大多数的模式使用时也都会产生很多很小的类,这本是好事,但也给外部调用它们的用原创 2017-12-05 10:36:41 · 743 阅读 · 0 评论 -
安卓设计模式の责任链模式
Android设计模式源码解析之责任链模式 1. 模式介绍模式的定义一个请求沿着一条“链”传递,直到该“链”上的某个处理者处理它为止。模式的使用场景一个请求可以被多个处理者处理或处理者未明确指定时。2. UML类图角色介绍Client:客户端Handler:抽象处理者ConcreteHandler:具体处理者3. 模式的简单实现简单实现的介绍责任链模式非常简单异常好理解,相信我它比单例模式还简单易懂原创 2017-12-05 10:30:00 · 638 阅读 · 0 评论 -
安卓设计模式の策略模式
Android设计模式源码解析之策略模式 1. 模式介绍模式的定义策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。注:针对同一类型操作,将复杂多样的处理方式分别开来,有选择的实现各自特有的操作。模式的使用场景针对同一类型问题的多种处理方式,仅仅是具体行为有差别时。需要安全的封装多种同一类型的操作时。出现同一抽象多个子类,原创 2017-12-05 10:27:35 · 631 阅读 · 0 评论 -
RecyclerView的使用技巧
RecyclerView简介从Android 5.0开始,谷歌公司推出了RecylerView控件,RecyclerView是support-v7包中的新组件,Google的官方文档中介绍的,RecyclerView用于在有限的窗口展现大量的数据。其实体现该作用的组件已经有了ListView、GridView,那么为什么还要有RecyclerView?下面就会做介绍啦~原创 2017-12-27 19:30:44 · 705 阅读 · 0 评论 -
EventBus的使用技巧和解析
EventBus由greenrobot贡献(该组织还贡献了greenDAO),一个Android事件发布/订阅轻量级框架。 它是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。原创 2018-01-03 21:31:55 · 2562 阅读 · 0 评论 -
Android逆向——反编译APK改代码
如果你想反编译一个简单的APK文件,修改里面的代码,那么你不妨尝试看一下,还是不难的。为什么说是简单的APK文件呢?因为复杂一点的,比如大企业的app,是不可能让你如你所愿的,他们一般会通过复杂的分包和混淆,让你无法获取代码的可读性,读都读不了,更何况是动手改代码了~系统:Windows一、apktoolapktool工具的作用:我们可以通过apktool去查看apk的Android...原创 2019-07-21 16:53:22 · 11929 阅读 · 0 评论 -
Androidの教你做闪屏启动页
老规矩,效果图如下:源码如下:https://github.com/ok406lhq/StartPageDemo启动页的开发主要包括了开屏闪屏和广告页的实现,效果如上图,具体的实现如下。#####1、闪屏设计实现方式有比较多种,其中有一种是通过Intent跳转的方式,跳转到一个布局只有布局中添加了闪屏图片的SplashActivity中,实现短暂的闪屏效果。这样做有一个小缺点(也可以忽...原创 2019-06-25 09:25:20 · 1902 阅读 · 0 评论 -
把Android的下载更新做成后台服务
做Android的版本更新,首先要有一个接口从网络获取最新版本,再根据最新版本的url,也就是下载链接进行下载安装。总的流程就是这样,这篇博客就不讲如何获取最新版本了,这个需要就跟写接口的哥们好好交流一下了~#####那么我们开始吧!一开始我做的这个功能是这样的:(上图!)后来发现,这样用户体验不是很好,需要等到进度条读完才能安装更新,这过程中什么都不能干,的确有点体验差。如果将Apk文件...原创 2019-03-11 09:39:24 · 2047 阅读 · 0 评论 -
Android如何获取通讯录?
最近开发Android项目中遇到需要用到通讯录的需求,谷歌百度查了一下,根据自己的需求,利用ContentProvder的ContentResolver来获取的通讯录并封装的一个工具类ContactUtils/** * 获取通讯录工具类 * 返回的数据: * [{ * "name": "xxx", * "note": "呵呵呵呵", * "phone": "13333333332&qu原创 2019-03-11 09:28:23 · 2680 阅读 · 2 评论 -
Android开发遇到的Set集合的运用
正式实习一个星期有余了,这半个月经历了找工作,找租房,再到安定下来,地铁路线也渐渐熟悉了下来,这对路痴的我来说真是一个冒险。也从一开始的懵逼看项目代码到现在偶尔能完成一些小需求,学到了很多东西。~ 记一个需求: 用户需要根据所选的货物(一个货种可以选择多个货物,例如蔬菜,你可以选菜花,芥蓝等),在收费信息中显示第一个所选货物的种类,看下图所示: 上图所示:整个架构是一个ViewPag...原创 2018-04-25 11:24:45 · 3653 阅读 · 1 评论 -
关于解决Android Studio配置文件和模拟器在C盘空间不足的问题
看了很多篇的博客,讲述如何将装在C盘中的Android Studio的缓存文件、avd模拟器文件搬家。 自己尝试了一下发现缓存文件不会很多,这个我不用转移,因为缓存文件我在安装时已经指定在别的盘符中了。如果需要的话可以参考这篇博客 Android-Studio 缓存文件夹配置接下来我们尝试将模拟器avd目录转移,这个只需要进入“C:\Users\Administrator.android ...原创 2018-03-08 19:25:10 · 6674 阅读 · 1 评论 -
Android 获取手机中微信聊天记录
首先我们要知道,微信的聊天记录一般是不提供给我们获取的,所以一般情况下我们手机没root的话就拿不到了。就算是root后的手机,想要获取微信的EnMicroMsg.db文件并且解密它、打开它也有点难度。下面我们就来演示怎么从安卓设备的手机中拿到微信的数据文件吧~实验软件 :Android Studio实验设备:Root过的真机一部一、拿到数据库文件EnMicroMsg.db一原创 2018-01-10 13:18:42 · 20206 阅读 · 8 评论 -
关于自定义View中wrap_content属性失效的问题
我们在使用自定义控件的时候,有时候会发现当我们设置子View的属性为wrap_content时,发现它最终展现的效果跟我们说预想的不一样,它展现的是match_parent的效果,这是为什么呢?先把问题抛出来,接下来就来简要讲解一下。问题就出在我们自定义View时的绘制视图阶段,即onMeasure()设置View宽/高这一步。 我们在自定义View的onMeasure方法中,是这样写的:原创 2018-01-09 20:32:41 · 3002 阅读 · 1 评论 -
安卓设计模式の模板方法模式
Android设计模式源码解析之模板方法模式 1. 模式介绍模式的定义定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模式的使用场景多个子类有公有的方法,并且逻辑基本相同时。重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现。重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,原创 2017-12-05 10:16:42 · 617 阅读 · 0 评论 -
安卓设计模式の组合模式
1. 模式介绍模式的定义 组合模式(Composite Pattern)又叫作部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。 GoF在《设计模式》一书中这样定义组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。使得用户对单个对象和组合对象的使用具有一致性。原创 2017-12-05 10:09:12 · 626 阅读 · 0 评论 -
安卓设计模式のAdapter模式
Android设计模式源码解析之适配器(Adapter)模式 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。原创 2017-12-03 10:30:21 · 1025 阅读 · 0 评论 -
Android Fragment
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/42628537,本文出自:【张鸿洋的博客】 很久以前写过两篇Fragment的介绍,主要就是介绍其功能:Android Fragment 真正的完全解析(上)和Android Fragment 真正的完全解析(下) 有兴趣的可以凑合看下。之前的博客属于怎么使用Fragment,本文转载 2017-06-17 10:17:30 · 290 阅读 · 0 评论 -
Android Studio中导出数据库文件的方法以及出现Failed to pull selection: open failed: Permission denied的解决思路
关于操作db文件导出Failed to pull selection: open failed: Permission denied问题的处理方法在遇到这个问题之前,你可能连data这个目录都打不开。。对此,解决办法是去到安卓的adb目录\Android\sdk\platform-tools下按住Shift右键“在此处打开命令行窗口”,进入命令行窗口后:需要操作的命令有: 1、adb shell进原创 2017-06-16 21:45:27 · 12507 阅读 · 5 评论 -
Android Studio踩坑日记之导入第三方类库爆红色J错误
导入第三方库SlidingMenu导入步骤这里有说–传送门~Android Studio导入第三方库(SlidingMenu)教程需要注意的是这里: 原本你去SlidingMenu里面复制到的应该是src、java文件夹和AndroidManifest.xml这三个,就像下面这样: 但是这样的话会出现一个问题,就是as没办法辨别里面的api,所以会出现爆红色“J”的错误 注意要将src原创 2017-04-16 15:16:51 · 2168 阅读 · 0 评论 -
Service生命周期解析及启动Service的方法
生命周期解析好的,从上图的生命周期,我们可以知道,Android中使用Service的方式有两种:1)StartService()启动Service2)BindService()启动ServicePS:还有一种,就是启动Service后,绑定Service!1)相关方法详解:onCreate():当Service第一次被创建后立即回调该方法,该方法在整个生命周期 中只会调用依次!onDe原创 2016-10-16 10:08:25 · 2010 阅读 · 0 评论 -
安卓网络编程先关知识的精确概述
网络图片查看器确定图片的网址发送http请求URL url = new URL(address);//获取连接对象,并没有建立连接HttpURLConnection conn = (HttpURLConnection) url.openConnection();//设置连接和读取超时conn.setConnectTimeout(5000);conn.setReadTimeout(500原创 2016-09-25 23:28:56 · 231 阅读 · 0 评论 -
Android模拟器访问服务器failed to connect to /(主机服务端ip) (port 8080) after 5000ms
如果是windows7,请关闭防火墙即可。控制面板->所有控制面板项->Windows 防火墙->自定义设置搞定这个操作后,你就可以自己连接网络服务器收发数据 09-22 10:41:37.111: W/System.err(16959): java.net.SocketTimeoutException: failed to connect to /192.168.1.105 (port 8080)原创 2016-09-22 11:12:03 · 19993 阅读 · 5 评论 -
安卓适配器的一些知识
适配器顾名思义,就是把一些数据给弄得适当,适合以便于在View上显示。可以看作是界面数据绑定的一种理解。它所操纵的数据一般都是一些比较复杂的数据,如数组,链表,数据库,集合等。适配器就像显示器,把复杂的东西按人可以接受的方式来展现。那么适配器是怎么处理得到的数据,并把它显示出来的呢。其实很简单,说白了适配器它也是一个类,在类里面它实现了父类的这几个方法:publicint getCount() //原创 2016-09-20 21:09:46 · 325 阅读 · 0 评论 -
数据存储和界面展现之二
测试黑盒测试 测试逻辑业务白盒测试测试逻辑方法根据测试粒度方法测试:function test单元测试:unit test集成测试:integration test系统测试:system test根据测试暴力程度冒烟测试:smoke test压力测试:pressure test单元测试junit定义一个类继承AndroidTestCase,在类中定义方法,即可测试该方法在指定转载 2016-09-19 16:42:18 · 272 阅读 · 0 评论 -
android:layout_gravity和android:gravity属性的区别
android:layout_gravity和android:gravity属性的区别一、介绍: * gravity的中文意思就是”重心“,就是表示view横向和纵向的停靠位置 * (1).android:gravity:是对view控件本身来说的,是用来设置view本身的内容应该显示在view的什么位置,默认值是左侧。也可以用来设置布局中的控件位置 * (2).android:layo原创 2016-09-17 09:53:56 · 354 阅读 · 0 评论 -
Android项目的目录结构
Android项目的目录结构Activity:应用被打开时显示的界面src:项目代码R.java:项目中所有资源文件的资源idAndroid.jar:Android的jar包,导入此包方可使用Android的apilibs:导入第三方jar包assets:存放资源文件,比方说mp3、视频文件bin:存放编译打包后的文件res:存放资源文件,存放在此文件夹下的所有资源文件都会生成资源i转载 2016-09-12 23:18:35 · 236 阅读 · 0 评论 -
ADB Connection error
ADB Connection error–用真机调试程序的时候,eclipse 的 Console 总是出现如下的错误”Adb connection Error:远程主机强迫关闭了一个现有的连接”。[2013-07-12 10:37:36 - DeviceMonitor] Adb connection Error:远程主机强迫关闭了一个现有的连接。[2013-07-12 10:37:38 - De转载 2016-09-13 20:44:44 · 326 阅读 · 0 评论 -
Kotlin第一学
Kotlin第一学什么是KotlinKotlin,它是JetBrains开发的基于JVM的语言。补充一下JetBrains,JetBrains公司是一个吊炸天的公司,起先开发的IntelliJ IDEA被认为是世界上最好的java开发工具之一,后来基于该IDE开发创造了Android Studio,被谷歌列为官方安卓开发IDE(实际上是基于Intellij,作为该平台的一个插件)。而后开发了Kotl原创 2017-07-10 17:30:05 · 417 阅读 · 0 评论