Android
文章平均质量分 55
痕迹丶
对代码不满足,是任何真正有天才的程序员的根本特征。
展开
-
介绍一种Android 平台 不需要获取imei imsi 无权限就能获取手机运营商的方法
我们都知道 Android 会根据设备设置的不同,去加载不同的资源文件夹。最典型的,会根据系统的语言去加载不同语言的字符串资源。而 Android 也是可以根据 MCC 和 MNC 加载不同的资源的。而我们就可以利用这一点,通过创建 values-mcc460-mnc00 这种资源文件夹,然后在对应的文件夹,放置不同的运营商名称即可。原创 2022-10-27 16:59:39 · 1222 阅读 · 1 评论 -
用控件当画笔获得bitmap代码记录
int width = 1000;int height = 1000;TextView textView = new TextView(context);Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);Canvas canvas = new Canvas(bitmap);textView.setText(“123”);textView.setBackgroundColor(Color.YELLOW原创 2022-06-30 18:35:19 · 195 阅读 · 0 评论 -
Xposed 绕过360加固获得真正的classloader
XposedHelpers.findAndHookMethod("com.stub.StubApp", loadPackageParam.classLoader, "attachBaseContext", Context.class, new XC_MethodHook() { @Override pr原创 2021-11-05 15:02:54 · 1601 阅读 · 0 评论 -
Android Apk 安装包 导出 神器 exe小工具分享,利用adb 命令一键导出当前前台应用
下载地址:https://github.com/miqt/PythonLearn/tree/master/apkdump/dist从手机利用adb命令导出apk的小工具 使用方法:手机打开目标应用双击exe文件,等待导出实现源码:import osimport redef run_silently(cmd: str) -> str: """返回系统命令的执行结果""" with os.popen(cmd) as fp: bf = fp._strea原创 2021-09-02 19:22:26 · 5013 阅读 · 0 评论 -
android 方法字节码插桩hook插件分享,全埋点,性能监控,线程,IO创建监控,一站式搞定,高可定制化,使用非常简单!
项目地址:https://github.com/miqt/android-plugin/blob/master/plugin/hook-method-plugin/readme.md这是一个 android 方法字节码插桩hook的插件,在方法进入和方法退出时,将当前运行的所有参数回调到固定的接口中,利用这一点,可以进行方法切片式开发,通过配置Hook点,达到Hook监控的目的。利用这个插件,可以实现:Android 全埋点,页面浏览,点击,等无痕埋点,按需配置Hook点即可,配置方法见下文And原创 2021-08-10 15:30:09 · 1225 阅读 · 6 评论 -
分享一个RSA加解密工具类,公钥加密私钥解密、私钥加密公钥解密、私钥签名公钥验签、生成公钥私钥
测试: public static void main(String[] args) { try { //生成公钥私钥 Map<String, Object> map = RSAUtil.initKey(2048); String PrivateKey = RSAUtil.getPrivateKey(map); String PublicKey = RSAUtil.getPubli原创 2020-08-04 11:02:22 · 1334 阅读 · 1 评论 -
android免root运行adb高级权限命令,例如修改手机设置等(转)
免Root实现静默安装和点击任意位置0 前言最近有了个需求:免 root 实现任意位置点击和静默安装。这个做过的小伙伴应该都知道正常情况下是不可能实现的。无障碍只能实现对已知控件的点击,并不能指定坐标。但是确实有人另辟蹊径做出来了,譬如做游戏手柄的飞智,他们是用一个激活器,手机开 usb 调试,然后插在激活器上并授权,飞智游戏厅就被「激活」了,然后可以实现任意位置点击。如果不了解的可以去他们官网了解下,在这里不多赘述了。无独有偶,黑域也使用了类似的手段,也可以用电脑的usb调试激活。我们知道,任意位.转载 2020-07-28 15:32:03 · 13305 阅读 · 9 评论 -
Android-ASM字节码插桩技术跳坑指南
经验总是不停刨坑刨出来的,最近结合工作需要并熟悉学习android ASM 字节码插桩的环境下,开发了一个方法 hook 的插件,虽然在各方其他开源项目的参考下,还是刨了不少坑,下面就来记录下。gradle 知识点记录–dry-run 查看gradle task执行顺序,验证插件是否被执行时有用。–stacktrace 查看详细堆栈,报错时可以看到插件代码错误的位置。ASM开发相关注意基本类型中的long 类型 和double 类型,占8个字节,在方法堆栈中占两个slot,不可以用ALOAD原创 2020-07-21 19:21:03 · 2232 阅读 · 0 评论 -
Android 豁免所有hide灰名单调用警告,做到不弹窗,logcat不提示,隐藏代码能并反射
从 android 9.0 开始,当代码调用某些系统api的时候,会因为api的一些判定灰名单级别,不同程度的对app做出提醒,最严重的是直接弹窗提醒,次之是会在logcat打印出调用内容。具体api名单列表:https://developer.android.google.cn/about/versions/10/non-sdk-q但有些情况下我们确实要使用这些api,下面是我总结了以下几种...原创 2020-04-17 14:36:57 · 1450 阅读 · 0 评论 -
java支持优先级的线程池 同步 异步
支持设置任务的优先级来顺序的执行任务import java.util.concurrent.Callable;import java.util.concurrent.Future;import java.util.concurrent.FutureTask;import java.util.concurrent.PriorityBlockingQueue;import java.util...原创 2020-04-14 19:02:09 · 363 阅读 · 0 评论 -
android 性能分析(优化)-利用AOP技术,字节码方法插桩,实现 android 耗时统计
在android开发的过程中,不管是开发SDK还是开发App,我们时常有这么一个需求,性能优化,或者卡顿优化,通常进行这项工作的时候,我们可能会凭着主观的一些观点,去定位排查某一部分代码,常用的手段就是在可疑代码前后加时间戳相减来手动统计,或者在运行的过程中,通过看android 自带的性能分析工具来进行优化。但这种方式难免会有疏漏,而且每段代码的执行过程也是不容易追踪的。今天就来给大家介绍一个...原创 2020-03-18 17:48:25 · 1761 阅读 · 1 评论 -
android 反射强行设置开启系统权限
发现小米 6 安全管家,即使我关闭了某些权限,但我一打开应用后,应用自己开启了权限,遂,反编译之,得以下反射强行设置权限代码。。理论上手动开启权限也是使用以下的代码进行,因此只有系统应用可以使用。(但不排除某些厂商定制rom的过程中,漏掉了关键的验证,调用只有有可能是可行的)AppOpsManager appOpsManager = mContext.getSystemService(AppO...原创 2020-03-12 17:16:57 · 1364 阅读 · 1 评论 -
android代码保护永不闪退
在我们开发的过程中,再厉害的程序员也无法保证写的代码没有错误,而这里面最严重的错误,对于android开发来说,毫无疑问就是app闪退了.特别是在开发第三方SDK的时候,假设因为SDK里面报的问题,导致对方App崩溃了,这对SDK而言的打击是非常严重的,有的时候我们甚至希望SDK即使无法很好的工作,也不要引发对接方App的崩溃.下面我就来介绍两种,可以根据代码判断,只会代码所在线程死掉,但不会引...原创 2019-11-30 12:54:11 · 2278 阅读 · 3 评论 -
Android使用Gson解析json时候的泛类型丢失问题
原来的会丢失的错误代码: RootEntity<List<TagData>> entity; entity = new Gson().fromJson(result, RootEntity.class);改正为: RootEntity<List<TagData>> entity; entity = new Gson().fromJs原创 2016-07-07 09:21:56 · 6705 阅读 · 0 评论 -
[android源码日记]当系统时间小于1970年
我们知道,计算器的时间是从1970年开始的,而java获取时间的方法System.currentTimeMillis()的返回值也是从0开始的,0就代表1970年一月一日。那么这个如果值为负数会怎么样?1969年?今天在读SystemServer源码的时候看到其中run方法修复时间的一段。它是这么处理的。// If a device's clock is before 1970 (befor...原创 2018-10-11 18:56:25 · 1169 阅读 · 0 评论 -
用24k纯java自己实现android的handler+message通信机制
事情的起因还是因为一次面试经历。面试官:“说一下android的handler机制。”经过几次面试之后发现几乎每个面试官都会问到这个问题,真的都快被问烦了好吧,于是用飞快的速度把之前都快说烂了答案的又说了一遍,好不容易都说完了,这时候面试官的操作来了,直接拿过来几张白纸。“恩,说的不错,来,那你试试能不能尝试用伪代码实现一下。”还有这种操作,当时我就蒙了,心想,要不就试试吧,反正都用了不知...原创 2018-09-21 16:56:15 · 1008 阅读 · 0 评论 -
一款非常简单易用的Android热修复框架 WandFix 使用详解 附实现原理
WandFix是一个基于java ClassLoader实现的热修复框架。效果展示:优点:类似于黄油刀可以直接对成员变量添加@InjectObject(“com.example.motordex.AppParsenterImpl2”)注解,来绑定热修复包中的实现类。无需关闭应用即可使修复包生效。与mvp模式搭配使用效果最佳。可以自己定义需要热修复的类。可以自己配置dex加密算法,...原创 2018-12-28 17:48:36 · 452 阅读 · 0 评论 -
BottomSheetDialog中CardView圆角不显示及去除白边
注意两个地方CardView 需要设置android:layout_marginTop="@dimen/y70"才会显示去除白边: dialog.setContentView(view); dialog.getDelegate().findViewById(android.support.design.R.id.design_bottom_sheet) ...原创 2019-04-18 11:24:41 · 2408 阅读 · 0 评论 -
记一次java.lang.IllegalAccessError错误
java.lang.IllegalAccessError: Field 'com.lm.presenter.LmViewPresenter.view' is inaccessible to class 'com.lm.presenter.SplashPresenter' (declaration of 'com.lm.presenter.SplashPresenter' appears in /d...原创 2019-07-08 17:47:59 · 32099 阅读 · 5 评论 -
记录在使用类加载器的时候遇到的一个错误:java.lang.LinkageError
报错信息是这样的:java.lang.LinkageError: Class com.lm.process.CheckProcess method void com.lm.process.CheckProcess.observer(com.lm.bean.HhInfo, android.view.View) resolves differently in interface com.lm.pro...原创 2019-07-08 17:48:45 · 4157 阅读 · 0 评论 -
Android使用读写锁实现多进程安全的SharedPreferences
背景由于app可能有多个进程,因此在某些场景下,就要进程间相互同步状态,避免多个进程各做各的,但数据不同步,导致产生异常。方案目前认为 Android 平台目前有这样几个方案:使用微信MMKV,微信开源的MMKV是支持多进程同步的,开发app的话推荐使用,不过对于开发SDK避免使用第三方代码的原则,不推荐用。使用ContentProvider 包裹 Sp ,其他进程使用的时候,通过Co...原创 2019-09-26 15:11:24 · 2679 阅读 · 0 评论 -
android基于mvp的热修复方案构思,不使用第三方
本文为作者原创,转载请注明出处由来现在开发android项目大部分都已经由mvc转移到了mvp,关于mvp是什么大致也不必多说了,无非三个层: - m:model层,一般封装对数据的操作,增删改查,接口访问等等。 - v:view层,也就是视图层,视图层不主动做什么,只是根据某些事件作出对应的视图展示。 - p:Presenter层,也就是逻辑层。图解(之前在别的博文...原创 2018-08-01 18:16:19 · 447 阅读 · 0 评论 -
android View 和 ViewGroup 事件分发机制
ViewGroup的事件分发机制大体流程为: ViewGroup的dispatchTouchEvent -> ViewGroup的onInterceptTouchEvent -> 子View的dispatchTouchEvent ->子View的onTouchEvent 1. ViewGroup.dispatchTouchEvent 事件拦截 2. ViewGroup...原创 2018-04-26 10:57:28 · 461 阅读 · 0 评论 -
android-opencv机器视觉库的集成部署
这段时间一直在学习opencv在android平台上的应用,因此打算把学习的过程记录下来,就当是学习笔记吧.opencv在android平台上的部署有两种方式:手机安装OpencvManager.apk,然后项目导入OpenCVSDK的Java库,使用 OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_13, context, ...原创 2018-03-27 17:55:05 · 685 阅读 · 0 评论 -
Android 解决WebView支持WebGL的兼容性问题
最近在开发的时候发现,虽然是同样使用的Android API中的WebView加载网页,但是对于不同的机型有的手机上并不能支持WebGL,理论上来说Android从5.0开始默认支持WebGL,原来Chromium对运行GPUs不稳定的或者有兼容性问题的设备会禁用WebGL。而且在Android平台可以通过安装Chorme浏览器访问chrome://gpu,找到reset notification原创 2016-11-06 18:55:31 · 32605 阅读 · 0 评论 -
android studio gradle home 路径设置
gradle home路径设置原创 2017-02-15 17:48:49 · 29000 阅读 · 0 评论 -
Android如何让你的第三方库可以compile的形式被使用
我们在开发Android或者后台程序的时候有时候会用到一些jar包和第三方框架等工具来节省我们的开发时间,之前使用eclipse的时候使用第三方框架通常是把jar包.so文件等等统统拷贝过来,后来换了Android studio的时候发现有另一种途径了,比如我使用目前一个比较火的框架xUtils3,它有控件注解,数据库访问,网络访问等一些非常方便的功能,让我们在开发的过程中不需要去“造轮子”而节省很原创 2016-11-06 21:44:36 · 15409 阅读 · 0 评论 -
android 上划删除效果,仿小米任务清除
示例程序见:https://github.com/MiQt/UpRemove原创 2016-10-11 11:13:18 · 7214 阅读 · 0 评论 -
SearchView去掉下划线
SearchView calSearchView = (SearchView) findViewById(R.id.et_search_text); if (calSearchView != null) { try { //–拿到字节码 Class转载 2016-07-06 09:47:22 · 9365 阅读 · 1 评论 -
Android studio下的Android JNI调用以及动态链接库.so的生成
什么是JNI:JNI(Java Native Interface)提供了Java和其他语言交互的一个接口,为什么说是接口呢,因为如果你用想用C++实现一个简单的两个数字加减的方法并把值返回,那么就需要首先在AndroidJniUtils.java(就是你写的调用C代码的接口类)类中像定义接口方法一样来预定义一个方法,而具体实现其实使用的就是你的C代码了。JNI的使用场景①你的一些功能算法已经用c代码原创 2016-04-14 11:00:10 · 12687 阅读 · 0 评论 -
解决Android studio 下的APK打包失败问题
今天遇到了一个奇怪的问题,本来在Android studio 1.4上运行的好好的程序,到了我更新完的Android studio 2.1上就打包失败了,但是用调试机直接运行则没问题。最后在app下的build.gradle下加入了这样的一段代码就通过了: lintOptions { abortOnError false checkReleaseBuilds原创 2016-05-16 15:25:32 · 16327 阅读 · 0 评论 -
android 降低minSdkVersion的版本
最近使用ceamera2开发相机,但因为他是支持的最小API是21,那么我想使用ceamera2也就是说我的APP不能在小于5.0的Android上运行了吗,原创 2016-05-25 09:51:49 · 10291 阅读 · 0 评论 -
Android自定义控件实现手机摆放位置的校准
先上效果 最近做的项目中的拍照模块要求拍照的时候手机是: ——竖直的 ——面朝上的 ——与地面的夹角为75° 基本上这个自定义控件就做了这样的一件事,如果手机的摆放位置符合上述条件,则会如图一所示,该控件中间的小圆显示在正中心的位置,整个控件是绿色的。 而如果摆放位置不符合条件,不是竖直的,夹角偏大偏小等,就会如图二图三所示,控件会变成红色而且中间的小圆也会做出对应的偏移提示用户原创 2016-04-11 10:17:54 · 7448 阅读 · 0 评论 -
Android unity3d 交互传递消息
然后用Android studio运行起来,点击【调用Android方法】按钮,这个方法会被调用,并在屏幕上弹出一个Toast显示unity发过来的消息。原创 2017-02-16 11:21:03 · 7507 阅读 · 0 评论 -
Android安装apk文件,适配Android 7.0
Android 安装apk适配7.0系统原创 2017-04-18 09:58:23 · 11307 阅读 · 4 评论 -
Android 7.0行为变更 FileUriExposedException解决方案
本文出处:http://blog.csdn.net/qq_27512671/article/details/71439571当我们开发关于【在应用间共享文件】相关功能的时候,在Android 7.0上经常会报出此运行时异常,那么Android 7.0以下没问题的代码,为什么跑到Android 7.0+的设备上运行就出问题了呢?,这主要来自于Android 7.0的一项【行为变更】!对于面向 Andr原创 2017-05-09 10:14:28 · 11675 阅读 · 2 评论 -
android-opencv之线性滤波.实现简单图像滤镜
opencv的线性滤波可以为图像添加一些效果,比如模糊,降噪,锐化,腐蚀与膨胀等,当然我们也可以自己来定义核来实现一些特殊的效果. 核是什么?那么上面提到的核是什么呢? 核可以看做是沿着图像像素移动的一个窗口,它遍历图片的每个像素,并且将计算后的结果输出到该像素,通过这样的一个图可以更直观的理解这个概念. 核说白了就是一个固定大小的数值数组。该数组带有一个 锚点 ,一般位于数组...原创 2018-03-30 15:46:38 · 1447 阅读 · 0 评论 -
使用android.hardware.camera2打造新的自定义相机
android.hardware.camera2这个包提供了相机设备和安卓设备连接的接口,他的存在弃用了原有的Camera相机。 和原有的旧API中的camera不同的是,camera2大大的提升了拍照的速度。并且值得一提的是,使用原来的camera相机拍完的照片仅仅是一个纯纯的图片文件,也就时说不包含图片的Exif信息,那么什么是图片的Exif信息呢,简单来说就是: 正如你看到的,就原创 2016-03-31 15:17:13 · 21712 阅读 · 21 评论 -
Android 截取手机屏幕两种实现方案解析
最近在开发的过程中,遇到了一个需要截取屏幕保存为图片的需求,具体为截取webview的试图保存图片。方法1:首先想到的思路是利用SDK提供的View.getDrawingCache()方法: public void printScreen(View view) { String imgPath = "/sdcard/test.png"; view.setDrawin原创 2017-04-21 16:17:09 · 9818 阅读 · 1 评论 -
拥抱Android O,Android固定快捷方式App Shortcuts
由来在新发布的Android 8.0功能和API中,Android 8.0 引入了对在应用启动器图标上显示通知标志的支持。通知标志可反映某个应用是否存在与其关联、并且用户尚未予以清除也未对其采取行动的通知。通知标志也称为通知点。简而言之呢,就是在Android 8.0+加入了类似于IOS的3DTouch的功能。下面就是他的效果。 这个小工能的添加可谓是非常方便的,在我们日常的应用场景中,有时候原创 2017-11-29 10:48:42 · 1328 阅读 · 0 评论