自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

XuZhenhao

冰冻三尺,非一日之寒;为山九仞,岂一日之功。

  • 博客(52)
  • 资源 (1)
  • 问答 (5)
  • 收藏
  • 关注

原创 HamonyOS —— HDC 指令

hdc install -r 【hap路径】持续待更新......

2024-04-11 11:50:20 203

原创 Javascript — 异步方法与异常捕获问题

如果 Promise 实现了拒绝事件处理器,则这个事件转交由 Promise 的拒绝事件处理器处理了,那么 try catch 依然无法捕获这个异常。PS:如果一个被拒绝的 Promise 没有实现拒绝事件处理器(then()、catch()、finally()),则这个事件将会由环境来进行处理,比如浏览器等。其中finally() 是 Promise 被兑现或者拒绝之后执行的回调函数,可以用来处理一些在 then 和 catch中执行的重复性代码。

2024-03-28 10:09:15 321

原创 HarmonyOS — BusinessError 不能被 JSON.stringify转换

在鸿蒙中BusinessError 继承于Error,而在JavaScript(以及TypeScript,因为它是JavaScript的超集)中,属性可能因JavaScript引擎的实现而异,并且可能不是所有环境下都是可枚举的。方法会将一个JavaScript对象或者值转换为一个JSON字符串,但是。对象可能还包含其他非枚举或不可序列化的属性,比如函数、循环引用或者。它只接受能够被序列化为有效JSON格式的属性。属性是一个包含调用堆栈信息的字符串,而。捕获的,因为它是可枚举的。

2024-03-19 10:25:27 510

原创 HarmonyOS —— AES 加解密实现

创建对称密钥生成器。通过密钥生成器随机生成对称密钥。创建加解密生成器。通过加解密生成器加密或解密数据。

2024-01-22 14:12:17 822

原创 HarmonyOS —— SM4 加解密实现

创建对称密钥生成器。通过已有二进制数据生成密钥。创建加解密生成器。通过加解密生成器加密或解密数据。

2024-01-22 14:11:38 749

原创 HarmonyOS —— SM3 摘要计算

国密 SM3 签名的实现和 MD5 签名实现是一致的,其实和 Java bcprov 的也是基本一致。这大大提高了上手速度。

2024-01-19 09:05:47 410

原创 HarmonyOS —— Hex 字符串转 Uint8Array

OpenHarmony 开发 ets Hex 字符串转 Uint8Array基本和 js 一致,需要注意的是 string 的 subString 方法和 subStr 的区别,前者所取得值是 start 和 end 后者是 start 和 len。

2024-01-19 08:51:45 546

原创 HarmonyOS —— buildMode 设置(对比 Android Build Varient)

在安卓中 Build Variant 主要依赖模块(module)中 build.gradle 的 BuildType 和 ProductFlavor 提供的属性和方法,我们可以使用 Build Type 可以配置不同的构建方式、ProductFlavor 主要用来进行多渠道打包。

2024-01-17 16:52:06 995

原创 HarmonyOS —— SHA256 MAC(对比 Java 实现)

使用 cryptoFramework 实现 HMAC 计算,并与 java 的实现方式进行对比。

2024-01-05 09:54:32 584

原创 HarmonyOS —— MD5 摘要计算

计算 MD5 摘要需要导入HarmonyOs提供的统一的密码算法库加解密相关接口。

2024-01-04 16:49:47 871

原创 HarmonyOS —— Uint8Array 转 Hex 字符串

OpenHarmony 开发 ets Uint8Array 转 Hex 字符串。

2024-01-04 16:32:56 606

原创 Android布局优化-include、merge以及ViewStub使用

merge 标签可以用来减少 View 层级,由于一般需要复用的 xml 都比较复杂因此极少存在需要使用的场景,目前主要是配合 include 标签,或者在自定义 View 时候,比如继承了某个 ViewGroup 的场景下使用 merge 标签减少自定义控件的层级。merge 标签不是View,所以被 merge 标签包裹的 view 无法使用 ViewGroup 的属性实现对应的布局效果,Google 提供了 parentTag 标签来解决这个问题。定义ViewStub。调用ViewStub。

2023-03-21 10:22:22 581

原创 中国移动一键登录 —— SDK5.8.1-5.9.0使用setAuthContentView方法开发更有个性的授权界面

此文出要解决部分接入者不知道如何设置点击事件以及设置的View没有和预想的一样全屏问题。目录1. 准备工作2. setAuthContentView的调用3. 运行效果图1. 准备工作1.1 已经接入好SDK,使用默认配置能够运行。1.2 根据公司产品要求调好SDK "本机号码一键登录" 按钮、号码栏、协议栏位置。2. setAuthContentView的调用2.1 准备好要添加到SDK授权页的XML文件<?xml version="1.0" encodin

2021-08-31 11:27:00 3788 2

原创 中国移动一键登录 —— SDK5.8.1DEMO运行提示 not found for signing config ‘config‘.问题

由于SDK提供方发布demo工程时将app下的build.gradle文件中的signingConfigs中的内容以**替换了,所以开发者直接运行会出现Keystore file 'E:\CMCCSSOSDK_Demo\app\**' not found for signing config 'config'. 目前发现很多开发者面对这个提示一筹莫展完全没有解决思路,更有甚者可能耗时一个下午。目录1. 准备工作2. 打开项目3. 运行工程4. 注意事项1. 准备工作1.1 开发.

2021-04-29 18:27:08 2041

原创 中国移动一键登录 —— Flutter(安卓)

随着Flutter逐渐的被越来越多的公司所采用,那么如何将中国移动统一认证SDK接入到Flutter应用中。目录1.准备工作2.开始接入3.运行调试4.注意事项1.准备工作1.1 下载好统一认证SDK,这里使用的版本是quick_login_android_5.8.11.2 在移动开发平台申请好应用拿到appid、appkey2.开始接入2.1 按照统一认证SDK接入文档配置好权限,READ_PHONE_STATE权限根据应用方需要选择是否添加,SDK不强制要求.

2021-04-13 22:55:56 3761 4

原创 Android逆向:smali编码实践(五)—— 小书亭去除定时广告以及权限未授权弹窗

目录1.准备工作2.反编译APK3.修改smali文件4.总结1.准备工作1.1下载好apktool的jar这里使用apktool-2.5.0.jar(PS: 执行命令为 java -jar apktool_2.5.0.jar d lsp.apk 与 java -jar apktool_2.5.0.jar b lsp)1.2 手机或者模拟器1.3 安装好JaDex方便自己看看大概写出来的东西是个什么样子,用其它工具也行,不过这个很方便。1.4 自己的keysto...

2021-03-26 14:32:28 838 1

原创 Android逆向:smali编码实践(四)—— 给某HS小说APP加上日志打印

目录1.准备工作2.反编译APK3.修改smali文件4.打包签名5.安装运行6.总结1.准备工作1.1下载好apktool的jar这里使用apktool-2.5.0.jar(PS: 执行命令为 java -jar apktool_2.5.0.jar d lsp.apk 与 java -jar apktool_2.5.0.jar b lsp)1.2 手机或者模拟器1.3 安装好JaDex方便自己看看大概写出来的东西是个什么样子,用其它工具也行,不过这个很方便...

2021-03-23 15:13:56 1467

原创 Android逆向:smali编码实践(三)—— 实体类创建以及if判断

目录1.准备工作2.编写smali文件3.编译smali文件4.检查并运行5.遇到问题1.准备工作1.1下载好smali的jar这里使用smali-2.4.0.jar(PS: 执行命令为 java -jar assemble xxx.smali -o xxx.dex)1.2 root的真机或者模拟器1.3 安装好JaDex方便自己看看大概写出来的东西是个什么样子,用其它工具也行,不过这个很方便。2.编写smali文件.class public Lcom...

2021-03-05 16:59:59 1669 1

原创 Android逆向:smali编码实践(二)—— 数组的创建以及轮询

目录1.准备工作2.编写smali文件3.编译smali文件4.查看及运行5.遇到问题1.准备工作1.1下载好smali的jar这里使用smali-2.4.0.jar(PS: 执行命令为 java -jar assemble xxx.smali -o xxx.dex)1.2 root的真机或者模拟器1.3 安装好JaDex方便自己看看大概写出来的东西是个什么样子,用其它工具也行,不过这个很方便。2.编写smali文件.class public Lc...

2021-03-01 16:00:00 1592 2

原创 Android逆向:smali编码实践(一)—— 字符串拼接以及打印

目录1.准备工作2.编写smali文件3.编译smail文件4.JaDex查看以及真机运行5.遇到的问题1.准备工作1.1下载好smali的jar这里使用smali-2.4.0.jar执行命令为 java -jar assemble xxx.smali -o xxx.dex1.2 root的真机或者模拟器1.3 安装好JaDex方便自己看看大概写出来的东西是个什么样子,用其它工具也行不过这个很方便。2.编写smali文件首先编写一个简单的smali文件.

2021-02-25 18:22:40 1507 1

原创 中国移动一键免密登录 103101签名错误

调用中国移动统一认证SDK返回103101 签名错误的原因是因为在统一认证的请求参数中的sign字段出现错误导致的,这个错误主要出现在开发者调用统一认证服务端api获取手机号时或者老版本的Android客户端sdk也有可能出现这个错误。1.生成sign参数的字段与json中对应的参数不一致如下是获取用户信息接口的参数格式{"appid" : "3000******76","msgi...

2019-01-07 14:50:20 2902 2

原创 中国移动一键免密登录103102 Android 包签名错误

移动统一认证一键免密登录api被调用时会检测应用的包名以及md5包签名以确认应用的合法性。出现包签名错误那么就是应用的包签名与用户在中国移动开发者社区上填写包名md5包签名的不一致导致的。那么出现这种问题的可能性有以下两种:1.开发者打包时使用的keystore文件变更 开发者打包时使用的keystore文件变更的情况一般是开发者在配置一键免密登录能力时使用的releas...

2019-01-07 10:26:18 2296 1

原创 《深入Java虚拟机》阅读笔记 —— 垃圾收集器

1.概述Java中垃圾回收器所做的工作可以概括为两项:1.检测出垃圾对象。2.回收垃圾对象所使用的堆空间并还给程序。垃圾回收的方法大概也能分为两种:1.将活动的对象复制到另一个堆空间,再将原来的空间释放掉。2.对活动的对象进行标记,再将没有被标记的对象进行回收。在Java中,垃圾回收器有很多种实现,比如:引用计数收集器、跟踪收集器、压缩收集器、拷贝收集器、按代收集器以及...

2018-07-04 14:37:44 198

原创 LayoutInflater 的from传入的context不同会有什么区别?

LayoutInflater.from(context);在Android开发中经常用到,很多年前想了一下,这里的from方法中传递的Context用Activity和Application会不会有什么不同。粗略的看一下源码,发现在from函数中调用的是一个context的抽象方法getSystemService,在ContextWrapper类的实现中又是调用的自己的成员属性mBase的getS...

2018-03-19 13:36:14 4501 2

原创 《深入Java虚拟机》阅读笔记(一)

深入Java虚拟机阅读笔记1.Java虚拟机主要的任务就是装载class文件并且执行其中的字节码。Java虚拟机中包含一个类装载器(class loader),它可以从程序或API中装载class文件,然后由执行引擎来执行字节码。2.Java的方法有两种,分别是Java方法和本地方法。其中Java方法由Java语言编写并保存在class文件中,而本地方法一般由c/c++或汇编语言编写,保存

2018-01-02 15:57:30 240

原创 c/c++ 实战之二分查找

c++实战之二分查找;二分查找的必要条件数组或者集合有序,或者存在一种关系 –> 满足条件与不满足条件的数据能够按照某种标准分成两部分。最简单的就是基本数据类型的数组了。比如说:我们声明了一个数组 ,如下:int array [] = {0,1,2,3,4,5,6,7,8,9,10};

2017-09-17 19:41:09 678

原创 c/c++函数指针

我们已知在c/c++中,指针用来指向变量的内存地址。还有一种特殊的指针 —— 函数指针,他指向的是函数的内存地址。1.函数指针的定义方式:函数指针定义方式必须与其要指向的函数定义形式相同,也就是说返回值、参数表和类型必须相同并且函数名前面必须加上 * 号并用小括号括起来, 如下;#include "stdafx.h"//定义一个函数say,打印输出。void say()

2017-09-12 00:48:01 357

原创 AndroidStudio获取SHA1签名笔记

在Android Studio获取sha1的方式很简单,首先打开Android Studio的命令行工具Terminal  这个一般在Android Studio底部的任务栏就有,点开就可以使用,界面如下图所示:获取Release SHA1:在当前的工程目录后输入命令: keytool -list -keystore + 我们的keystore全路径包括文件名及后缀。回

2017-09-11 16:16:56 458

原创 commitallowingstateloss 和commit的区别

前段时间有大佬反应在使用DialogFragment的时候使用show的时候有出现程序crash的问题,有大神给的解决方案是重写show方法,因为在show方法中实际调用的是FragmentTransaction的commit()方法,将其改用commitAllowingStateLoss就可以了。其实这个问题到现在也在困扰我,那就是,他们之间有啥区别?带着这个问题我们来看看FragmentT

2017-08-30 12:02:45 6661

原创 Android JNI动态注册

在JNI的大多数教程中,使用最普遍的就是通过javah命令生成头文件的方式实现注册,这种注册称之为jni静态注册。而jni动态注册要弄懂就需要花费一些精力在源码上面了,今天在这里先将jni动态注册的代码先记录下来:例如在我要注册一个Java类中的native方法:public native void setName(String name);那么我们需要在我们的native_lib.c文件中声明一个st

2017-08-22 08:03:26 534

原创 JNI 文件读写

对于只要入门了的Java工程师,写一个文件读写的功能是相当的简单,但是通过JNI进行文件的读写,相信有很多人都没去做过。当然对于JNI入门了的开发人员来说,这只是小菜一碟而已。今天我也来试试JNI如何实现文件读写:首先在java类中写一个native 方法:public native void readAndWriteFile(String srcPath, String ...

2017-08-20 17:51:22 2723

原创 Visual Studio 2017 生成dll时无法解析的外部符号 main问题

作为一个JNI新手,今天在第一次生成dll文件时发现了一个奇怪的问题,就是出现了如下所示的错误: MSVCRTD.lib(exe_main.obj) : error LNK2019: 无法解析的外部符号 main,该符号在函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中被引用 在度娘经过多方查找,有人前辈给出的方案是去

2017-08-20 15:01:52 8217 5

原创 JQuery学习笔记

一、简介:Jquery是一个java script库,其作用主要是:1.操作和选取html元素2.操作呢CSS3.Html事件函数4.Java script 特效、动画5.Html DOM遍历和修改6.AJAX7.Utilities  二、 JQuery语法2.1语法示例$(this).hide();   隐藏当前元素$(“p”).hide();

2017-01-25 10:32:19 508

原创 JQuery Mobile

JQuery Mobile笔记 一、JQuery Mobile页面1. JQuery mobile页面分为头部(header)、内容(content)、和底部(footer)。示例1://data-role=”page”为显示在浏览器中的页面data-role=”header”为页面的头部可以用来做标题或者添加一些搜索按钮data-role=”content

2017-01-25 10:04:47 1744

原创 Java Script初探

闲来无事做,不如码代码!希望在2017年的到来之际,赶上JS的这趟末班车!

2017-01-17 21:41:22 672

原创 Java内部类

将一个类的定义放在另一个类的定义内部,这就是内部类。

2017-01-09 23:14:13 378

原创 Java 按位操作符

按位操作符用来操作整数基本数据类型中的单个比特,即二进制位。按位操作符会对两个参数中对应的位执行布尔代数运算,并最终生成一个结果。按位操作符  & (与):如果两个输入位都是1,则按位与操作符生成输出一个1,否则输出一个0。public class TestOperator { public static void main(String[] args) {

2016-12-28 23:15:14 351

原创 Java正则表达式入门

正则表达式以一种强大而灵活的文本处理工具,使用正则表达式我们能够以编程的方式构造复杂的文本模式,并对输入的字符串进行搜索。初学正则表达式时,语法是一个难点,在Java的正则表达式中要注意:  \\     表示的是“我要插入一个正则表达式反斜杠,所以其后面的字符具有特殊意义”,例如:\\d   表示整数   |     表示或  \t     表示制表符 TAB 

2016-12-21 09:24:14 410

原创 继承SwipeRefreshLayout实现上拉加载更多功能

Android 的SwipeRefreshLayout是一个比较好的下拉刷新控件,现在已经有越来越多的企业开始使用这个控件了。但是遗憾的是这个控件并没有上拉加载更多的功能,所以自己抽空,根据网上已有的例子,自己写了一个。首先必须要做的是创建一个类继承SwipeRefreshLayout,这里我把它命名为:XZHRefreshLayout/** * TODO:Created by Xu

2016-12-15 18:28:34 390

原创 通过事件分发机制处理ListView与ScrollView滑动冲突

ListView与ScrollView滑动冲突处理,是一个很经典的案例,网络上有各种各样的解决方案,比如使用LinearLayout取代ListView、重写ListView的onMeasure方法都能很好的解决这个问题。但是本次采用的是通过重写ListView的dispatchTouchEvent来处理滑动冲突,并以此加深对Android事件分发机制的理解。在此之前先了解下面这三个方法:

2016-12-03 09:48:48 608

RichEditor富文本eclipse版

RichEditor富文本eclipse版,MainActivity的父类可以修改成Activity

2016-06-05

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除