Android
文章平均质量分 64
陳英傑
这个作者很懒,什么都没留下…
展开
-
(一)区块链钱包之生成助记词
助记词明文私钥的另一种表现形式,最早是由 BIP39 提案提出,其目的是为了帮助用户记忆复杂的私钥 ( 64 位的哈希值)。助记词一般由12、15、18、21个单词构成,这些单词都取自一个固定词库(2048个),其生成顺序也是按照一定算法而来,所以用户没必要担心随便输入 12 个单词就会生成一个地址。生成过程生成一个128位随机数,再加上对随机数做的校验4位,得到132位的一个数,然后按每11位做切分,这样就有了12个二进制数,然后用每个数去查BIP39定义的单词表,这样就得到12个助记词(当.原创 2021-05-20 15:59:31 · 5069 阅读 · 5 评论 -
(三)区块链钱包之加密算法简介
钱包作为用户隐私数据不可以对其进行直接保存,更不可以上传服务器,所以如何处理来管理钱包需要慎重。原创 2021-05-20 18:45:57 · 1226 阅读 · 2 评论 -
从源码分析Handler机制
一、发送消息当发送一个消息,在handler里面最后会执行方法: private boolean enqueueMessage(@NonNull MessageQueue queue, @NonNull Message msg, long uptimeMillis) { msg.target = this; msg.workSourceUid = ThreadLocalWorkSource.getUid(); if (mAs原创 2020-12-02 16:39:02 · 229 阅读 · 1 评论 -
反编译apk文件,查找jar文件中字符串
package com.lzxx.testdemo.util;import java.io.BufferedReader;import java.io.File;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Enumeration;import java.util.List;import java.util.zip.ZipEntry;import java.util.zip.ZipF原创 2020-12-02 15:45:10 · 866 阅读 · 0 评论 -
IPC通信方式
aidl是IPC机制的一种解决方案,使用起来相对Messenger等稍微复杂,简单例子如下:1、服务端首先创建服务端的应用,app/src/main下创建aidl文件,这里只定义了一个方法,传进来一个字符串,经过服务端处理在返回给客户端:package com.lianzhuoxinxi.baoduoduo;import com.lianzhuoxinxi.baoduoduo.User;interface IMyAidlInterface { String getName(Stri原创 2020-12-01 18:10:44 · 639 阅读 · 0 评论 -
RSA加解密及分段加解密
package com.xxx;import android.util.Base64;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.nio.charset.Charset;import java.nio.charset.StandardCharsets;import java.security.In原创 2020-11-09 14:57:00 · 295 阅读 · 2 评论 -
创建线程的方式以及Executors的四种线程池
创建线程有几种方式?面试常问的问题,一般回答3种方式,及格;如果你能具体的说4种,那你就满分了,第四种是通过Executors创建线程池。先来说说创建线程的3种方式:一、继承Thread类public class ExtendsThread extends Thread { @Override public void run() { super.run(); Log.e("ExtendsThread >>> ", "thread r原创 2020-11-05 16:13:17 · 310 阅读 · 0 评论 -
Java和go加密,解密,Base64失败
在客户端和go后台对接口的时候,加解密出现了问题记录。问题主要出现在base64上,刚开始Android使用import android.util.Base64;public class AesUtil { public static String encryptEcb(String content, String key) { if (TextUtils.isEmpty(content) || TextUtils.isEmpty(key)) return ""; try {原创 2020-11-04 15:27:05 · 1792 阅读 · 0 评论 -
Android实时监测网络连接状态及网络是否可用,类似微信的功能。
实现实时监控网络变化,类似于微信的功能,当网络不可用时app能实时感知到,网上找了很多例子并不能实现,或者只实现其中一部分功能,我就参考大家的方法做一个组合。一、网络状态变化监测,此方式只能监测网络连接改变,不能判断是否可用(例如网络连接正常,但是不能访问网络)。在使用时定义一个方法,名字随便,参数必须是一个NetWorkState类型:// 监听网络变化类型 @NetWorkMonitor(monitorFilter = {NetWorkState.WIFI, NetWorkState.GP原创 2020-10-27 17:10:06 · 2614 阅读 · 0 评论 -
关于Android Q 的文件分区存储权限适配研究
我们发现每安装一个应用,你的手机文件管理中就会创建很多文件夹,而且应用卸载文件夹还在,里面的文件也在,手机用着用着文件系统越来越庞大,最后就是卡顿。在Android 10 新特性中有一个保护外部存储设备中的用户数据,应用可以将自己的文件存储在专用沙盒中,另外就是可以访问公共文件夹,比如Download、DCIM、Music等,这样就不会在/storage/emulated/0/下面创建很多文件夹,你也不能随便访问别的应用文件夹。Android 10虽然加入了此特性,但是Google肯定会考虑给开发者原创 2020-08-27 11:54:42 · 579 阅读 · 0 评论 -
Android关于设备唯一标识符的获取,适配Android10
在开发中我们需要获取一些设备信息,比如设备宽高、分辨率、IMEI、MAC地址等,有一些设备信息是不会变化的,有一些会随着系统的升级改变,而且还会受权限的影响。在实际开发中也踩过不少坑,经过测试、研究得出一些结论,希望能帮助到大家,同时也作为一个学习记录。原创 2020-08-26 18:18:09 · 2500 阅读 · 2 评论 -
Android获取网络类型--最新最全版
public static String getNetworkState(Context context) { ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); // 获取网络服务 if (null == connManager) { // 为空则认为无网络 return NETW原创 2020-08-25 09:07:17 · 2621 阅读 · 2 评论 -
RecyclerView的Item复用导致动画不执行问题
场景:在RecyclerView的item中的某个控件在状态0时执行动画,其他状态下不执行。实现方式:判断状态0时给view设置动画,我采用补间动画。问题:在滑动的时候,划到下面再滑倒上面,上面刚才执行的动画不动了,这是由于itemView在离开屏幕的时候,view自身会把它的动画置空。那么我们就可以考虑在view依附在窗口的时候执行动画: if (holder.timerView.getTag() instanceof View.OnAttachStateChangeList原创 2020-06-20 18:16:09 · 2645 阅读 · 1 评论 -
日期Date操作的优化
一般我们对日期的操作使用的类有Date、DateTimeFormat、Calendar,在进行日期格式操作时一般用DateTimeFormat比较多,我们知道Date出来的数据格式是Mon Jun 15 11:00:59 CST 2020我们想把它转换成易读的格式,使用DateTimeFormat:public void test() { Date date = new Date(); SimpleDateFormat formatter = new SimpleDateFormat原创 2020-06-15 18:28:20 · 377 阅读 · 0 评论 -
ThreadLocal分析和使用
ThreadLocal是一个多线程情况下为独立线程存储数据的类。这样说可能不太好理解,下面通过一个例子来看清晰明了:private ThreadLocal<Integer> local = new ThreadLocal<>();private int i;@RequiresApi(api = Build.VERSION_CODES.N)private void threadLocal() { IntStream.range(0, 5).forEach(valu原创 2020-06-15 18:12:43 · 207 阅读 · 0 评论 -
RecyclerView和ListView区别
RecyclerView:1、规范了ViewHolder,内部实现了缓存机制;2、实现多种效果,横向/纵向,线性/网格/瀑布流;3、不能设置EmptyView;4、不能设置HeaderView和FooterView;5、可以局部刷新6、自带动画,可以自定义,继承ItemAnimator;7、没有item事件,需要自己定义;8、实现了NestedScrollingChild,可以实现嵌套滚动,例如配合CollapsingToolbarLayout使用;ListView:1、需要自定义Vie原创 2020-06-05 17:01:43 · 322 阅读 · 0 评论 -
Socket.IO实现聊天功能
我们知道OkHttp3中有WebSocket可以实现聊天功能,但是我们需要自己定义前后台交互协议,比较麻烦,而Socket.IO完美的帮我们定义好了这个协议,用起来相当简单。Soket.IO文档在Github上都有1、为连接做准备,一般在代码块中。这里options可以设置一些其他参数,比如重连(默认true),重连次数等。 { try { IO.Options options = new IO.Options(); options.t原创 2020-06-04 18:06:37 · 528 阅读 · 0 评论 -
OkHttp3网络请求(三)之下载篇
1、OkClient.javapublic class OkDownload { private static OkDownload instance; private Handler mHandler; private OkHttpClient okHttpClient; private DownloadInterceptor interceptor = new DownloadInterceptor(); private OkDownload() {原创 2020-05-26 17:11:01 · 488 阅读 · 0 评论 -
OkHttp3网络请求(二)之拦截器
OkHttp3网络请求上一篇已经简单介绍了,之前看鸿洋大神的博客学习OkHttp的使用,这里记录一下学习成果。关于拦截器的介绍这里就不介绍了,直接使用:RequestInterceptor.javapublic class RequestInterceptor implements Interceptor { /** * headerLines 参数List */ private List<String> headerLinesList = new A原创 2020-05-26 17:04:23 · 734 阅读 · 0 评论 -
OkHttp3网络请求(一)
OkHttp3使用导入依赖:implementation 'com.squareup.okhttp3:okhttp:4.6.0'wiki:点击进入Github一、GET请求1、创建OkHttpClient对象,最好使用单例模式: okHttpClient = new OkHttpClient.Builder() .retryOnConnectionFailure(true) .connectTimeout(time_out, Tim原创 2020-05-26 16:33:37 · 466 阅读 · 0 评论 -
使用反射暴力访问私有属性
try {Class clazz = Class.forName(“package.ClassName”);Object instance = clazz.newInstance();Field field = clazz.getDeclaredField(“privateFiled”);field.setAccessible(true);field.set(instance, true);Object filed= field.get(instance);// filed即为获取到的私有属性原创 2020-05-09 18:22:16 · 500 阅读 · 0 评论 -
第三方登录 QQ登录时 No permission to write APN settings问题
Android集成原生QQ登录功能时,出现No permission to write APN settings错误,在IUiListener的三个方法都不回调,并不是因为什么缺少WRITE_APN_SETTINGS权限,而是我们需要在onActivityResult中再添加两行代码:@Override protected void onActivityResult(int reques...原创 2020-04-08 13:55:00 · 1896 阅读 · 2 评论 -
Error inflating class android.webkit.WebView NotFoundException: String resource ID #0x2040002
在Android 5.0.1手机上出现WebView加载出错问题,具体报错信息:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lianzhuoxinxi.baoduoduo/com.lianzhuoxinxi.baoduoduo.ui.other.WebViewActivity}: android.v...原创 2020-02-04 15:15:20 · 2707 阅读 · 0 评论 -
Android画对号动画
把mCircleValueAnimator的duration设置大于零可以先画背景再画对号,修改画笔样式可以把背景化成圈或者纯色背景。package com.lianzhuo.qukanba.widget;import android.animation.Animator;import android.animation.AnimatorListenerAdapter;import an...原创 2019-10-30 10:58:36 · 1104 阅读 · 0 评论 -
Aes加密及向量补码,InvalidAlgorithmParameterException异常expected IV length of 16 but was 8
前提:AES加密向量是16位,DES加密向量是8位。由于Android端项目落后,后台(python)和iOS已经调试完毕,用aes加密,向量8位。我在调试的时候怎么都过不了,总是出现InvalidAlgorithmParameterException异常,后来查阅资料加上分析应该是python和ios有自动补码功能,而且补码规则是统一的,很有可能Java没有所以才会出现这个异常。这里经过分析...原创 2019-10-30 10:44:02 · 1595 阅读 · 0 评论 -
Android调用系统分享,资源未找到问题
Android调用系统的分享来分享网络图片,是不能直接分享网络图片的,需要把图片保存到本地:// 保存图片public static void saveBitmap(Bitmap bitmap, String filePath, String fileName) { File headDir = new File(filePath); if (!headDir....原创 2019-10-22 15:14:50 · 1248 阅读 · 0 评论 -
Android简便的使用SharedPreference做存储之smartsharedpreferences
在安卓项目中少不了使用SharedPreference来做数据存储,但是一般的使用都需要自己定义一些方法和管理key,今天记录一下使用smartsharedpreferences来简便的做SharedPreference存储。原创 2018-12-24 15:26:47 · 281 阅读 · 0 评论 -
EditText设置android:gravity="right"不起作用
一般我们设置控件的内容对其方式用gravity属性,但是今天在写Android布局设置EditText内容右对齐的时候,如下图:在预览看着没问题,在一部测试真机(8.0)也没问题,可是在我自己的Nubia(7.0)上就不能正常显示了,如图:网上好多说是hint和gravity不能同时生效,实验发现并不是,相关搜索结果较少,后来看到一篇博客介绍的挺详细,后面附上;解决方法就是用a ndro...原创 2018-11-29 17:18:01 · 2083 阅读 · 0 评论 -
android studio中的错误transformClassesWithDexForDebug
今天在做项目的时候遇到一个问题,我在android7.0的手机运行没事,在4.3上报错,报错日志忘了截图了,我就手打了,大概只这样:eror:Execution failed for task ':app:transformClassesWithDexForDebug'.com.android.build.api.transform.TransformException: duplicate ent原创 2017-11-20 15:59:56 · 1078 阅读 · 0 评论 -
使用jdk 1.8的问题
1,我在做一个功能的时候,最低要求jdk8,写了一段代码: 2,把app/build.gradle改为jdk1.8: 3,但是编译出错,需要再添加一个东西: 到此编译就正常了。原创 2017-07-27 10:44:59 · 567 阅读 · 0 评论 -
ToolbarLayout、AppBarLayout和NestedScrollView组合实现的滑动折叠及遇到的问题
记录开发过程遇到的问题,以便日后快速解决此类问题。原创 2017-02-28 16:52:27 · 2727 阅读 · 2 评论 -
动态实现通知栏的显示和隐藏
vvv翻译 2016-04-21 14:25:54 · 990 阅读 · 0 评论 -
shareSDK使用心得
本人集成shareSDK分享时遇到不少麻烦,通过慢慢解决之后有一些心得体会,可能大牛觉得一般,请勿喷!特此分享希望能帮助更多的开发者。步骤按照官网来:http://wiki.mob.com/Android_%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97/1,第一个注意的问题:2.6以上配置文件的包名修改了(把原来的类名cn.sharesd原创 2015-12-14 17:06:55 · 835 阅读 · 0 评论 -
Android仿京东地址选择器
仿京东地址选择器,第一次选择从省开始,第二次会自动定位到已选择位置,三级地址可以点击切换选择,但是没有实现左右滑动切换;此demo只用一个列表,如果需要左右滑动可以改用TabLayout+ViewPage实现。首先上效果图一、PopupU.javapublic static Dialog showRegionView(Context context, int mType, final S...原创 2019-03-23 18:26:16 · 1555 阅读 · 1 评论 -
CoordinatorLayout折叠悬浮完美实现,解决Toolbar的title布局中
简单说CoordinatorLayout可以实现炫酷的顶部布局到ActionBar的折叠效果,经大量实验总结,做一个笔记。1、属性介绍AppBarLayout它的直接子布局都有一个layout_scrollFlags属性,有五个值(举例上面是CoordinatorLayout布局内置Toolbar,下面是列表):1、scroll可以滚动,其他牵扯到滚动的属性都依赖这个属性,结合使用才有用。...原创 2019-04-01 17:20:40 · 2290 阅读 · 0 评论 -
沉浸式状态栏,包括折叠布局的顶部显示到状态栏
1、一般沉浸式状态栏a、在BaseActivity.java中设置一系列参数。public class BaseActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(...原创 2019-04-01 17:52:50 · 1097 阅读 · 0 评论 -
RecyclerView分页加载
recyclerview分页加载,需要重写OnScrollListener。activity:public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private MainAdapter adapter; private ProgressBar ...原创 2019-09-26 23:52:33 · 3900 阅读 · 0 评论 -
TextView的展开收起、自定义ViewGroup使第二个子View紧跟第一个子TextView的内容显示
文本的展开收起常见,第二个View紧跟TextView后面显示也常见;但是,纵观全网好像没有找到比这个更复杂的需求了,此需求把两者糅合在一起了。原创 2019-07-31 12:14:25 · 432 阅读 · 0 评论 -
Android动态设置引导页,支持在任意Activity、Fragment上
这是一个组件,很灵活的运用在任意一个项目中,支持在Activity和Fragment上显示,可以设置显示次数,也可以设置每次启动都显示等,基本可以满足所有的Android开发需求。下载传送门...原创 2019-07-31 16:14:09 · 491 阅读 · 0 评论 -
RecyclerView的item有EditText时复用问题,及RecyclerView.Adapter的onBindViewHolder参数position不能final。
RecyclerView已经基本替代了ListView和GridView成为开发中使用最多的控件,在使用的过程中遇到的问题在此记录一下。1,RecyclerView的item中有EditText时,当你在某个item的EditText输入内容之后滑动的话,由于复用就会导致你输入的内容出现的复用的新item中,再滑回去可能你刚才输入的内容就没有了,这个肯定不行的。解决办法:a,最简单的是把Edi...原创 2019-07-17 10:37:51 · 1891 阅读 · 0 评论