- 博客(32)
- 资源 (17)
- 收藏
- 关注
原创 Android应用本地离线激活认证方案—so文件授权认证
一.需求场景在实际的开发工作过程中,我们经常会遇到过这样一个需求,就是客户要求我们的APP功能使用之前必须具备一定的密钥认证机制。现在是互联网时代,一般我们常规的做法都是建立起自己系统平台的用户体系,客户端通过用户名和密码去登录,以实现该需求。但是如果我们的APP目前不需要联网,没有自己的用户体系呢?换言之我们的APP需要进行离线认证使用,既然是离线认证,那意味着我们的认证过程必须存在于前端自己的项目之中,那就存在被破解的风险。众所周知,现在的反编译工具很多很强大,反编译一个未加固的APP仅仅只是一瞬间
2021-11-10 09:40:38 5065
原创 分享我的Android蓝牙开源作品—HBluetooth
大家好,好久没来发博客了。本篇将跟大家分享我在github上的一个开源项目,是关于安卓蓝牙开发的封装,包含蓝牙设备的搜寻、连接、通信,支持经典蓝牙和低功耗蓝牙,语言版本有Java和Kotlin两个版本。其实说起来,这个项目早在2018年的时候就已经编写过一版了,只不过由于当时工作比较繁忙,搁置了很长一段时间,后面又没有去理会。直到今年换工作,有事没事看看github账户,偶然看到有一个开发者给我提了第一个issue,惊喜万分,提醒我应该重新拾起这个项目了,然后就重新优化了一下,更新至Github,并准
2021-10-18 10:33:02 3699 6
原创 Android Studio下使用AIDL创建和使用远程service
好久没来更新博客了,今天心血来潮来写一篇关于如何在AS下结合AIDL创建和使用远程service。在此之前我先跟大家解释下什么是远程service?以及为什么要使用远程service?相信不管对于安卓新手还是老手而言,对于service并不感到陌生,所以这里就不跟讨论其基础概念和一些知识点了。所谓的远程service意思其实就是提供一个独立于某个app进程而创建的服务,这个服务可以提供给多个app
2016-07-05 18:34:26 3806 5
原创 自定义类似于ViewPager的可上下滑动切换效果的视图
今天给大家分享一个使用Scroller滚动类实现的控件,我们知道,viewpager实现的是一种左右切换的效果,使用scroller+事件分发来实现viewpager本身并不是一件特别难的事,因为viewpager其内部的实现原理就是这样。为了跟大家更好地分享下scroller的用法,我实现了一个可以上下切换的效果。下面直接贴该类代码:1.VDViewPager.classimport a
2016-03-03 10:58:37 3945
原创 Android viewpager+fragment实现动态加载碎片(fragment重复使用)
距离上次发博客好像已经至少有两个月的时间了,不禁感叹时间过得真快,也是因为项目一直在忙,所以没来发博客,今天有闲情就来一发。好了,废话不多说,今天讲的是fragment复用的问题,提到碎片,相信大家都不陌生,fragment寄宿于Activity,依activity之存而存,依其销毁而销毁。今天我们大概要实现什么样的效果呢,那就是一个fragment重复使用,通过点击界面上方的导航栏不同的标题
2015-12-28 23:51:16 13717 1
原创 Android授权登录新浪微博获取用户个人信息
今天我讲的是Android通过新浪微博授权登录获取用户信息,大家都知道,现在很多软件除了本地注册登录之外,还增加了第三方登录功能,最常见的是直接授权QQ等软件来登录应用而无需自行注册,其原理更多的是通过开放协议OAuth获取第三方用户信息来达到此目的。本篇讲的正式基于OAuth来获取新浪微博用户信息。一、准备工作我们都知道,无论是分享到新浪微博,还是获取新浪微博的用户信息,都离不开
2015-10-15 10:59:52 13645 7
原创 如何将编辑框EditText置于系统软键盘之上及相关细节的实现
最近在做类似与QQ空间和微信朋友圈评论界面的修改,顺便研究了下Android软键盘的一些使用方法,在网上收集了大量资料后自己进行了一些总结,并且通过亲测可用,希望能给广大读者带来用处。好了下面开始正题。为了让大家更容易看懂,我贴出了一个小例子,在这个例子中有主要的活动界面MainActivity,有主要用于监听软键盘显示与隐藏的KeyboardListenRelativeLay
2015-09-10 16:39:19 2911
原创 Android使用官方API分享内容到QQ和微信(非第三方集成)
最近在做分享功能,主要是实现QQ和微信分享,打算把自己实现过程跟大家分享一下,也是本人第一次发博客。好了,废话不多说,直接正题。我把各种分享封装到一个类ShareUtil中,打算通过调用这个类里面的方法来实现分享,不过在使用这个类之前,我们必须首先进行一系列配置和准备工作。一、注册官网帐号并登陆,审核应用并通过,下载签名工具获取你的应用的签名并填写到官方网站应用签名中1、在分享之前
2015-08-28 11:07:06 8858 8
原创 JetPack之WorkerManager使用
1.调用方法//JetPack组件 WorkManager//Gradle引入依赖:implementation "android.arch.work:work-runtime:1.0.0-alpha04"//优点:任务一定会被执行,即使应用被关闭。不同Worker可以链式顺序执行。//可传数据进WorkerData.Builder builder = new Data.Builder();builder.putString("name", "WorkManager");Data dat.
2021-07-09 15:19:41 506
转载 kotlin判断是否为null写法优化
举例一:在java中我们经常会写这样的代码: if (time == null) { time = "上午"; }判断一个值是否为空,为空则设置一个默认值。但是在kotlin中可以有简便的写法:time ?: "上午"使用 ?: 的操作符,当time为空时,自动设置默认值即可,而无需判断举例二:if (time == null || time.length < 3) { LogUtils.e(TAG, "字符不合法")}可以将上面简写...
2021-07-07 11:19:33 1156
转载 Kotlin优雅地判断EditText数据是否为空
很多时候我们要判断EditText输入的数据是否为空,在Java中需要以下代码:String mobile = etMobile.getText().toString();if (TextUtils.isEmpty(mobile)) { showError("手机号不能为空"); return;}String password = etPassword.getText().toString();if (TextUtils.isEmpty(password)) { s..
2021-07-07 11:17:12 542
转载 设置Android Studio开发无线调试
设置Android Studio开发无线调试1、从插件市场安装插件WIFI ADB ULTIMATE并重启Android Studio生效。这是右边框会增加一个选项,就是刚才安装的插件:2、保证手机/pad设备和电脑连接同一wifi,否则无法进行无线调试,切记。3、通过数据线连接设备,打开设备的5555端口,每次设备重启,需要重新打开设备的端口:adb tcpip 55554、如果不知道当前设备的ip地址,运行命令:adb shell ifconfig5、连.
2020-05-31 20:05:34 896
转载 MySQL主表与副表级联操作及多表查询(两张独立表,一张关系表)
MySQL中主表与副表的区别,级联操作的运用划重点:1 被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的。2 主表被参考的字段通常都设置为主键3 当有外键约束的时候,添加数据的顺序:先加主表,再添加副表的数据4 当有外键约束的时候,修改数据的顺序:先修改副表,再修改主表的数据5 当有外键约束的时候,删除数据的顺序:先删除副表,再删除主表的数据级联操作当有外键...
2019-04-03 15:03:49 6548
转载 mysql闪退问题及修改密码
在管理页面,点击服务,展开服务项。找到mysql服务,启动服务即可。但是笔者在操作中发现,并没有找到mysql服务找不到mysql服务的解决办法:首先打开CMD,切换到MySql安装目录的MySql Server →bin目录下运行如下命令(具体试个人安装的MySql版本及路径)>cdC:\Program Files\MySQL\MySQL Serv...
2019-04-02 09:40:48 417
转载 SpringBoot配置HTTPS,并实现HTTP访问自动转HTTPS访问
这里说一下为什么写这篇文章,因为我也是一个SpringBoot初学者,在配置https的时候遇到了一些坑,根据网上的配置方式,发现一些类已经过时,这里仅以记录一下我的配置过程,以供参考.1.使用jdk自带的 keytools 创建证书打开cmd窗口,输入如下命令keytool -genkey -alias tomcat -keyalg RSA -keystore ./serve...
2019-04-01 13:45:44 417
转载 oracle的下载与安装
下载:首先在浏览器地址栏输入(我下载的版本是12C 1版本,点击该连接就可以进入):http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html点击接受许可协议和点击查看全部,会弹出如下图: ...
2019-03-19 14:01:54 311
转载 ORACLE时间函数(SYSDATE)深入理解
加法select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from dual; --加1月 select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期 select ...
2019-03-18 17:55:47 442
转载 springboot集成schedule(深度理解)
背景在项目开发过程中,我们经常需要执行具有周期性的任务。通过定时任务可以很好的帮助我们实现。我们拿常用的几种定时任务框架做一个比较:从以上表格可以看出,Spring Schedule框架功能完善,简单易用。对于中小型项目需求,Spring Schedule是完全可以胜任的。1、springboot集成schedule1.1 添加maven依赖包由于Spri...
2019-03-18 17:20:14 1437
转载 构建微服务:Spring boot 入门篇
什么是spring bootSpring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(...
2019-02-26 10:29:40 162
转载 Java hashCode() 和 equals()的若干问题解答
本章的内容主要解决下面几个问题:1 equals() 的作用是什么?2 equals() 与 == 的区别是什么?3 hashCode() 的作用是什么?4 hashCode() 和 equals() 之间有什么联系? 第1部分 equals() 的作用equals() 的作用是 用来判断两个对象是否相等。equals() 定义在JDK的Object.java...
2019-02-25 16:04:12 141
转载 浅谈Mysql 表设计规范
本文首先探讨下数据库设计的三大范式,因为范式只是给出了数据库设计的原则,并没有告诉我们实际操作中应该怎样操作,应该注意什么,所以我们还会谈下实际工作中需要注意的具体操作问题。三大范式首先放出三大范式内容,然后再进行解释:第一范式:确保每列的原子性.,如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式.;(只要是关系型数据库都满足1NF)...
2019-02-21 20:02:57 161
转载 MySQL语法大全_自己整理的学习笔记(MySQL语句 整理二)
select * from emp; #注释#---------------------------#----命令行连接MySql--------- #启动mysql服务器net start mysql #关闭 net stop mysql #进入mysql -h 主机地址 -u 用户名 -p 用户密码 #退出exitstatus;显示当前mysql的ver...
2019-02-21 15:24:01 178
转载 Android事件传递机制
事件传递虽然算不上某个单独的知识点,但是在实际项目开发中肯定会碰到,如果不明白其中的原理,那在设计各种滑动效果时就会感到很困惑。关于事件的传递,我们可能会有以下疑问:事件是如何传递的事件是如何处理的自定义view的时候,事件也冲突了怎么解决带着这三个疑问,我们来总结一下事件传递机制是怎么回事。 一、事件分发的原理:1、事件是如何传递的:(1)首先由Activity分发,分发给根View,也就是De...
2018-05-21 23:26:31 168
转载 Android 安全访问机制(沙盒数据共享)
Android是一个多进程系统,在这个系统中,应用程序(或者系统的部分)会在自己的进程中运行。系统和应用之间的安全性通过Linux的facilities(工具,功能)在进程级别来强制实现的,比如会给应用程序分配user ID和Group ID。更细化的安全特性是通过"Permission"机制对特定的进程的特定的操作进行限制,而"per-URI permissions"可以对获取特定数据的acce
2017-10-16 11:09:45 2207
原创 基于Google Json工具包解析数据
大家好,前面我写了一篇文章,标题为《Android之json数据的解析方法》,文章讲述的是使用安卓开发工具自带的工具类来解析json数据,不过在实际开发中,由于考虑到效率问题,更多的人会选择其它更为强大的解析工具,比如Google的json解析工具。本篇正是基于Google Json工具包来讲解如何使用它来解析数据,调用toJson方法可以将其它数据类型转换成json数据类型,或者调用from
2015-10-22 15:49:30 2127
原创 Android实现交错的GridView视图
相信大家都有看到过,在很多应用中都出现过安卓自带的GridView控件实现的界面,界面中显示的更多的是规则排列的图或图文并排,但是也存在部分应用界面中显示无规则的图片或图文。这到底是怎么实现的呢?其实很简单,利用开源控件StaggeredGridView-master(点此下载)就能实现了。下面我们就来介绍这个控件的基本用法,其实跟安卓开发工具自带的GridView的使用原理基本是一样的。
2015-10-20 14:11:26 1246
原创 Android利用HTTP协议加载网络图片
给出一张图片的网址,我们怎么把这张图片加载到我们的ImageView控件显示呢?由于采用网络请求,我们必须在AndroidManifest.xml添加权限由于是网络请求数据,我们必须在开辟一条线程来完成数据请求,得到数据后最终回到主线程刷新UI显示图片即可。好了,该说的已经说了,下面直接贴代码了。1、MainActivity.javaimport java.io.IOE
2015-09-16 14:31:34 2832
原创 基于百度地图定位SDK实现定位
一、创建应用要使用百度地图的一些功能,比如定位功能的实现,就必须首先注册一个百度开发者帐号,然后到http://lbsyun.baidu.com/apiconsole/key创建应用,申请开发中在你的程序的AndroidManifest配置文件所需要填写的key;创建应用时首先填写好应用名称和应用类型,填写过程中最值得注意的就是安全码了,事实上在该填写项下面已经标明安全码的填写格式,那就是:数
2015-09-16 11:45:11 1169
转载 Android中的搜索框(SearchView)的功能和用法
1、SearchView是搜索框组件,它可以让用户在文本框里输入文字,通过监听器取得用户的输入,当用户点击搜索时,监听器执行实际的搜索。2、SearchView组件的常用方法如下:①setIconifiedByDefault(boolean iconified) ===> 设置搜索框默认是否自动缩小为图标。②setOnQueryTextListener(SearchView
2015-09-14 11:40:49 12284 3
原创 Android之json数据的解析方法
本篇跟大家介绍的是Android Json数据的几种解析方法,大家都知道,我们在向服务器发送请求获取JSON字符串之后常常要进行信息的提取,这实际上就是解析的过程。解析json数据有很多中方法,如果你打算将json数据解析并封装到一个类中,那么我建议你使用Google的提供解析工具包,调用fromJson将json数据解析成对象,或者toJson将一个对象解析为一个字符串,使用起来简单暴力,非常方
2015-09-12 14:21:25 1063
转载 android 输入框EditText禁止输入Emoji表情符
通过添加EditText的addTextChangedListener()监听来过滤Emoji表情:onTextChanged()beforeTextChanged()使用方法在开发中可能多处会用到过滤Emoji表情符,为了方便使用自定义EditText来实现:import android.widget.EditText;import android.wi
2015-09-11 09:31:37 5599 1
原创 复杂布局中点击编辑框EditText以外界面无法隐藏软键盘的解决方法
前面我写了一篇文章,题目为”如何将编辑框EditText置于系统软键盘之上及相关细节的实现“,并且在代码中介绍了使用复写onTouchEvent(MotionEvent event)方法来实现点击编辑框EditText以外界面无法隐藏软键盘的解决方法,但事实上,该方法并不总是有些,特别在复杂的布局中往往会失效,因此特给大家分享一个比较给力的方法,那就是添加如下代码: @Override
2015-09-10 16:58:29 767
Android RecyclerView基本用法Demo(源码)
2016-07-14
套用并修改Android Studio模板Tab activity(toolbar+tab+viewpager)
2016-07-13
Android RecyclerView的基本用法Demo(源码)
2016-07-13
使用并修改Android Studio模板Tab activity(toolbar+tab+viewpager)
2016-07-12
Android fragment的实现Demo
2015-09-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人