![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
自我记录有意思的事情
文章平均质量分 65
小小bug creator
这个作者很懒,什么都没留下…
展开
-
ServiceConnection没有回调的一次排查记录
bind service 没有回调排查原创 2022-12-28 10:35:47 · 1102 阅读 · 1 评论 -
Sqlite 断电数据丢失问题排查
sqlite SynchronousMode 模式影响原创 2022-12-13 11:50:14 · 1725 阅读 · 0 评论 -
Android app启动流程
app启动,四大组件启动原创 2022-09-27 16:47:07 · 1165 阅读 · 0 评论 -
Android 检查自己进程持有的FD
进程打开的FD原创 2022-09-22 17:49:04 · 987 阅读 · 0 评论 -
Android RunTime执行指令
android Runtime 执行原创 2022-07-12 15:55:08 · 1188 阅读 · 0 评论 -
Android 支持的系统的share uid
系统支持的sharedUersid原创 2022-07-06 12:10:03 · 1139 阅读 · 0 评论 -
加密填充AES和RSA
加密填充只针对 aes 和rsa 加密。rsa签名是另外一个填充方式。其他加密算法使用不多。为什么需要填充?为什么需要知道填充?为什么需要填充?RSA和AES虽然属于两种截然不同的加密类型,但它们都属于块密码的应用范畴。1.AES的块大小是固定的16字节,RSA的块大小根据密钥长度和填充方式而定。由于AES每次只能处理固定长度的数据(即一个块大小),当数据大小不是块大小的整数倍时,就需要对原始数据进行填充,因此填充对AES来说是技术原理上的需求。因为无法保证数据一定是对齐的。2.RSA则不原创 2022-05-30 18:13:49 · 990 阅读 · 0 评论 -
Android NetworkPolicyManagerService
Android 网络策略管理工作中遇到一个问题,App在后台运行获取当前网络链接状态,网络是BLOCKED状态。跟踪下这个状态的产生。问题出现在Android7,我看的源码是Android 12.获取当前网络状态 ConnectivityManager mConnectivityManager = mContext.getSystemService(ConnectivityManager.class);NetworkInfo info = mConnectivityManager.getAct原创 2022-01-25 15:24:50 · 2901 阅读 · 0 评论 -
Android流量统计分析
Android流量统计分析本文只做为个人分析留档。使用NetworkStatsManager statsManager = (NetworkStatsManager) getSystemService(Context.NETWORK_STATS_SERVICE);tatsManager.querySummary(ConnectivityManager.TYPE_MOBILE, "", startTime, endTime);statsManager.querySummaryForDevice(Co原创 2021-12-21 17:09:48 · 2835 阅读 · 0 评论 -
android jdk9 JAXB异常解决
jdk 升级,Android编译报错,解决方案// Add missing dependencies for JDK 9+if (JavaVersion.current().ordinal() >= JavaVersion.VERSION_1_9.ordinal()) { // If you're using @AutoValue or any libs that requires javax.annotation (like Dagger) compileOnly 'com.gi原创 2021-08-31 16:01:22 · 301 阅读 · 0 评论 -
Android 广播发送
广播接收逻辑结论先说结论:动态注册,如果不是有序广播,循环发送完,不等待上一个广播的结果。静态注册,每次都会重新生成一个receiver的实例,而且会被当成有序广播处理,必须等到上一个处理完成,才会继续下一个。因为静态注册,会涉及到进程创建。上代码广播接收的处理逻辑是在发送的部分。入口是在AMS的broadcastIntentLocked这个最终开始的地方。添加接收者首先是粘性广播,需要留存。这部分先不看。如果不是只发送动态注册if ((intent.getFlags()&Inte原创 2021-07-29 14:18:24 · 591 阅读 · 0 评论 -
对称加密和非对称加密
加密技术本文只是自我记录,不做任何技术参考。数据加密,大体分为两类:对称加密和非对称加密。对称加密根据密码,大体可以分成:分组密码和流密码。对称的分组密码主要有:DES和AES.非对称主要是RSA和椭圆。流密码暂时没看明白,后续补充非对称加密并不比对称加密安全。加密的破解只取决于密钥的长度。对称加密对称加密,就是加密和解密使用的是相同的密码。主要是置换和混淆变更。1.DESDES历史不介绍,DES是标准的Feistel 密码结构。Feistel 密码结构密码大概结构如下:加密流程:令F原创 2021-07-20 14:15:37 · 610 阅读 · 0 评论 -
android 11 后台启动service不能访问camera(摄像头)解决
Android 11 后台启动service不能访问camera(摄像头)解决Android 11增加了权限,在后台启动一个service,无法访问摄像头。解决方案解决方案分为两类:1.启动者有前台activity;2启动者本身是一个后台服务。启动者有前台activity在需要启动的服务里面增加前台服务的标签,注明需要使用camera。这个比较简单,直接贴代码。 <service android:name="xxxxxxx" and原创 2021-04-13 18:34:47 · 6463 阅读 · 0 评论 -
Android 导入WrappedKey
Android 导入WrappedKey本文给出WrappedKey导入AES密钥的方案。本文参考代码 CTS中的导入测试。WrappedKey 需要的格式: KeyDescription ::= SEQUENCE( keyFormat INTEGER, # Values from KeyFormat enum. keyParams AuthorizationList, ) SecureKeyWrap原创 2021-03-19 15:19:42 · 1259 阅读 · 0 评论 -
关于 Android WrappedKeyEntry 要求的asn.1格式简析
WrappedKeyEntry 要求的ASN.1 der格式借助 Android 9(API 级别 28)及更高版本,您能够利用 ASN.1 编码密钥格式将已加密密钥安全导入密钥库。Keymaster 随后会在密钥库中将密钥解密,因此密钥的内容永远不会以明文形式出现在设备的主机内存中。此过程提高了密钥解密的安全性。注意:只有搭载 Keymaster 4 或更高版本的设备才支持该功能。如需支持以安全方式将已加密密钥导入密钥库,请完成以下步骤:生成目的为 PURPOSE_WRAP_KEY 的密钥对。建议原创 2021-03-04 11:21:26 · 900 阅读 · 1 评论 -
Android USB插拔广播
Android USB插拔广播最近在适配新机型,发现没有USB插拔事件,大概跟踪下源码,看广播的发送。PS.没有发送插拔广播是系统问题或者是设备的问题,与新版本无关,这是个bug。新版本没有取消广播。USB的相关介绍本文不描述,包括host client之类的描述。USB 概要Android里面与USB相关的几个重要类包括:UsbService:核心类,系统服务,UsbManager:核心类,系统服务,app层API打交道主要类。This class allows you to access原创 2020-12-28 16:06:39 · 2288 阅读 · 2 评论 -
Android 资源文件匹配规则
Android 资源文件匹配规则Android 资源文件,可以加各种限定标注,类似我们常用的layout-hdpi ,layout-xhpdi,value-zh-rCN,layout-400x800等等。官方支持的请参考:应用资源概览那么Android是怎么去判断使用哪个一个呢?资源查找我们知道,不管定义多少个限制符的资源文件,ID只有一个,所以到底取哪个文件夹下面的呢?以Resource#getDrawable开启。主要流程是:Resource#getDrawable-》Resource#ge原创 2020-12-24 16:43:10 · 666 阅读 · 1 评论 -
Android设置显示语言
Android设置显示语言本文主要记录UI适配遇到的快捷方法。需要适配俄文显示,但是系统不支持选择语言,自己设置。private void setLanguage(String lang) { String languageToLoad = lang; Locale locale = new Locale(languageToLoad); Locale.setDefault(locale); Configuration config =原创 2020-12-21 16:32:01 · 752 阅读 · 0 评论 -
android 11 Setting panel的一次源码分析
Android 11 Setting panel的一次源码分析Android 11关于Wi-Fi的开关等设置,不允许用户直接调用,需要从panel设置。启动代码如下:val panelIntent = Intent(Settings.Panel.ACTION_WIFI)startActivityForResult(panelIntent, 10)其中的action包括:ACTION_WIFI 单Wi-Fi,包括Wi-Fi开关和连接ACTION_NFC NFCACTION_INTERNET_原创 2020-12-18 16:34:09 · 1530 阅读 · 0 评论 -
intent的android:mimeType 解析
Intent的data Uri 解析如下方法:intent.data=Uri.parse(“content://telephony/carriers”);方法解析是在:public @Nullable String resolveType(@NonNull Context context)这里的规则:content匹配的话就继续往下,获取getAuthority:telephony。查找manifest定义的privoder。在根据里面的getType获取对应的真实type。<provid原创 2020-12-14 15:11:55 · 280 阅读 · 0 评论 -
RSA/ECB/OAEPWithSHA-1AndMGF1Padding 类似工具类 代码
源码MGF1import java.security.MessageDigest;/** * 掩模生成函数 * mask generator function, as described in PKCS1v2. */public class MGF1{ private MessageDigest digest; /** * Create a version of MGF1 for the given digest. * * @param di原创 2020-10-29 11:40:35 · 3023 阅读 · 1 评论 -
RSA加解密的OAEP MGF1 填充解析
RSA加解密的OAEP 填充解析加密时的填充PKCS#1 v2.1: RSA密码学规范中关于 OAEP的模式的讲解如下:RSAES-OAEP-ENCRYPT (( n, e), M, L )可选: Hash 哈希函数(hLen代表哈希函数的输出字节数)MGF 掩码生成函数输入:(n,e) 输入的RSA公钥(k代表RSA模数n的字节长度)M 待加密的数据, 一个长度为mLen的字节串,并且mLen<=k-2hLen-2L 可选的和消息关联的标签;如果L没有提供,默认的原创 2020-10-28 11:01:01 · 4951 阅读 · 1 评论 -
Android keyStore系统存储的RSA密钥,加解密处理
Android keyStore系统存储的RSA密钥,加解密处理Android有keysrore可以存储密钥,RSA密钥对中,公钥可以取出,私钥不能取出只能使用。本文只看23就是6.0及以上。生产密钥对生成密钥的参数。spec = new KeyGenParameterSpec.Builder(mAlias, KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_ENCRYPT原创 2020-10-27 10:39:22 · 1874 阅读 · 6 评论 -
Android获取Mac地址 蓝牙 Wi-Fi
获取MAC 地址获取Wi-Fi MAC直接上代码: public static String getMacAddrByIp() { String strMacAddr = null; try { // 获得IpD地址 InetAddress ip = getLocalInetAddress(); byte[] b = NetworkInterface.getByInetAddress(ip)原创 2020-10-23 16:14:44 · 2868 阅读 · 2 评论 -
Ams创建activity的部分节点本文关注的节点:2创建进程
Ams创建activity的部分节点本文关注的节点本文关注的节点,主要包括两个部分:1.怎么选择目标的activity;2是否需要创建进程。大体走的流程大家可以参考其他文章,本文只截取需要的几个关键节点。本文列举的代码都是:***API-28***的代码。创建进程的时机startActivity会走到 ActivityStarter#startActivityUnchecked这个里面//前面还有一堆代码就是各种task和flag的处理mTargetStack.startActivityLoc原创 2020-10-13 13:38:44 · 127 阅读 · 0 评论 -
AMS创建activity流程中的部分节点:1选择目标的activity
Ams创建activity的部分节点本文关注的节点,主要包括两个部分:1.怎么选择目标的activity;2是否需要创建进程。大体走的流程大家可以参考其他文章,本文只截取需要的几个关键节点。本文列举的代码都是:***API-28***的代码。选择目标activity启动activity的代码大家都很熟悉,这里看下怎么选择的?选取的代码在startActivityMayWait里面进入。启动模式分类:1.显式启动activity的显式启动,是指定了目标activity的,不管是setclass原创 2020-10-12 11:55:59 · 454 阅读 · 0 评论 -
属性动画的执行过程
属性动画的执行过程本文以ObjectAnimator.ofFloat(view, “translationX”, 0,200.0f);为例使用属性动画属性动画的使用,最简单的方式如下:ObjectAnimator animatorBtnY = ObjectAnimator.ofFloat(view, "translationX", 0,200.0f);//平移200animatorBtnY.setRepeatCount(-1);//重复次数,-1无限重复animatorBtnY.setRepea原创 2020-09-22 10:37:41 · 411 阅读 · 0 评论 -
Tween Animation 补间动画 为什么没有改变view属性?
Tween Animation 补间动画 为什么没有改变view属性?Android的补间动画不会造车view属性的变化,为什么?本文看的是Android28.开始补间动画主要有四个:TranslateAnimation,ScaleAnimation,RotateAnimation,AlphaAnimation。就是平移,缩放,旋转和透明四种。然后加一个AnimationSet。我们从TranslateAnimation跟进,意义是一样的。使用//这个就是一秒以内从0,移动1000,x值Tra原创 2020-09-16 17:52:49 · 463 阅读 · 0 评论 -
AES 加密 排查
AES 加密的一次问题排查首先描述问题:因为和嵌入式设备通信,在数据在240个以内(包含)的时候,云端解密正常,但是超过240,在240以后有一段乱码。加密算法:AES/CBC/PKCS5Padding+iv问题起因嵌入式设备因为某种原因,加密使用的机器本身提供的加密程序,程序设计最大有效加密字段是:240,考虑填充16,最大256.所以开发人员直接把数据拆开,拆成240段+…+240+…+n。但是240加密没有填充。然后把加密合并提交,云端并不知道终端这样处理。造成现象:240+乱码(16)+原创 2020-09-11 14:32:06 · 229 阅读 · 0 评论 -
Android检测注册的broadcast receiver
Android检测注册的broadcast receiver检查系统的注册的广播接收器有两个路径静态注册检测静态注册的广播接收:getPackageManager().queryBroadcastReceivers()系统有现成的东西动态注册检测动态注册就有点麻烦,我们先看下动态注册系统到底是怎么走的?动态注册有一下几个方法,最后都是到//android.app.ContextImpl.class private Intent registerReceiverInternal(Broad原创 2020-09-11 11:29:27 · 2626 阅读 · 0 评论 -
0x1.0p-1022 p是啥?
0x1.0p-1022 p是啥?public final class Double 里面定义的有最大和最小: public static final double MAX_VALUE = 0x1.fffffffffffffP+1023; // 1.7976931348623157e+308 public static final double MIN_VALUE = 0x0.0000000000001P-1022; // 4.9e-324P是干啥?首先科学计数法:把一个数表示成a与原创 2020-07-31 10:59:40 · 1544 阅读 · 1 评论