- 博客(187)
- 收藏
- 关注
原创 a.gray.PiggyGoldcoin.a病毒(已解决)
一、问题描述最近公司突然收到应用宝,OPPO和VIVO的应用下架通知,通知我们的俩款App疑似金融类诈骗软件,已下架。点进去查看是 平台例行扫描应用再次推送病毒结果,自动下架~当时全项目组都很蒙蔽,一个运动类App居然被查出是金融类诈骗病毒。后面不信邪有上传了一次,结果还是说是病毒软件,为了防止多次上传被拉黑名单,于是我们先打算自行测试一下。第一个,各大测试平台,VIVO用的是腾讯,安天和360扫描,于是被得到了以下结果测试了几次,发现都是腾讯手机管家测出来的,...
2020-11-19 20:01:05 78023 45
原创 ADB命令查看应用包名
一、查看当前包名1、在手机上打开app2、电脑端Crtl+R 输入cmd回车 输入命令:adb shell dumpsys window w |findstr \/ |findstr name=3、如下图,我在手机上打开了今日赚(一款赚零花钱的悬赏任务类App),查出来的包名应用名:其中 com.im.todayz为应用包名 ,fw.earntoday.ui.activity.MainActivity为当前运行的activity界面二、查看所有包名1. 依旧数据线连接手机,注...
2020-11-03 09:50:02 57913 4
原创 Retrofit网络请求二次封装
(之前用过Any,但是后端返回的数据格式有时候会不一样,有可能是Boolean,String,或者就是个列表,并不是一个json,所以后面我换成了JsonElement)App应用程序通过 Retrofit 请求网络,实际上是使用 Retrofit 接口层封装请求参数、Header、Url 等信息,之后由 OkHttp 完成后续的请求操作。网络请求在App开发中是不可避免的开发功能点,Android自带的ottp用于网络请求,于是便衍生了各种便捷的网络请求三方库。retrofit的网络请求的工作本质上是。
2024-10-24 18:30:15 455
原创 Andorid 应用更新(升级)
如果使用 Google Play 提供的应用内更新 API,你通常不需要任何额外权限。如果你的 APK 文件下载到了外部存储(如 SD 卡或公共下载文件夹),你需要这个权限(Android 10 及以上通常不需要使用外部存储权限,使用。: 如果用户通过浏览器或自定义下载器安装应用,Android 8.0(API 级别 26)及以上需要明确授予安装 APK 的权限。如果你使用 Google Play 应用内更新 API,它处理了所有更新流程,开发者不需要操心文件读写和安装权限。1.请求接口,是否需要更新。
2024-10-24 10:46:31 304
原创 Android LiveData 数据倒灌
另一方面,LiveData 本身被设计为粘性事件,也即,一旦 LiveData 持有数据,那么在观察者订阅该 LiveData 时,会被推送最后一次数据。一方面,用于通信的 LiveData 是被托管在 Activity / Application 级作用域 SharedViewModel 中,于是。相关类型的文章很多,这里只做个人总结和其余的方法推荐。(假设通信双方是 Fragment)
2024-09-24 10:52:40 519
原创 Android 点击其他组件让输入框失去焦点
在用户填写基本信息的界面里,在输入框唤起键盘后,有时候又会弹起选择框(PickerViewDialog),如果用户在没有关闭键盘的情况下,点击PickerView,此时的焦点仍然在上个输入框,此时。之前想的是,在点击选择框时,让输入框失去焦点,但是有多个选择框和输入框的情况下,这样代码就太冗余了。于是就想到了,在dispatchTouchEvent里进行事件处理。4.这样就实现了点击屏幕上就失去焦点的功能。
2024-09-24 09:57:03 338
原创 RadioGroup和Viewpager中onCheckedChanged和onPageSelected 循环调用多次问题
其实在写这个代码的时候我就想过,再选中某个页面的时候,去设置对应的radiobutton的状态的时候,回调了onCheckedChanged,又在这里面设置viewpager的currentItem,设置了currentItem就会回调onPageSelected,岂不是无限循环。但是现在因为切换指定页面的时候,需要请求接口来刷新页面,然后今天在自测的时候,发现同一个接口会疯狂请求好几个!看那三个方法里面的代码,在满足条件的情况下,会有三次onCheckedChanged的回调,所有是这儿出了问题。
2024-09-20 20:31:35 472
原创 Android 通过相机和系统相册获取图片,压缩,结果回调
在常规的App开发中,很多时候需要用户上传图片来进行一些业务上的实现,例如用户反馈,图片凭证等。我的Retrofit请求自己又封了一下,这儿就不粘贴。传文件和普通接口会有些不同,注意一下就好了。流程请看代码注释,其中的fileprovider,需要自己在manifest中声明。我使用的是EasyPermission框架,也可以自己写。你允许分享的文件路径。相关权限回调处理,可以去看我的另一篇博客。指的是一个 XML 文件,你需要在。标签,并定义了可共享的目录。目录下创建这个文件,告诉。
2024-09-14 09:52:48 332
原创 EditText输入框单独设置hint字体大小
这次的需求,因为输入的手机号很大,但是提示文案大了后不好看,所以需要对hint字体单独设置。但是在sml中,是无法去设置hint字体大小的,那么就从代码入手。一般都只会对hint提示做颜色上的设置,而他的字体大小是随着输入内容大小一致的。平时我们在开发时经常会用到输入框,用户登录,验证码,反馈,文本输入等等。2.实现思路 SpannableString。
2024-09-12 17:36:48 244
原创 获取App应用列表,不需要权限
但是获取应用安装列表的权限现在属于敏感权限,即QUERY_ALL_PACKAGES权限。业务需要获取用户的已安装的应用列表进行上传。2.实现代码 AppUtils.kt。1.Manifest文件里进行配置。这样就是获取了安装列表的数据。
2024-09-11 14:36:45 323
原创 Android 获取设备相关信息
在做某些项目时,需要上传必要的设备信息给服务器用于风控在此做一下总结。主要抓取设备id操作系统版本,设备型号,IMSI,路由器,mac地址,设备mac地址,安卓id,经度,纬度,ip地址....
2024-08-29 16:42:08 538
原创 AndroidX 库和旧的 Android 支持库 (android.support) 之间的冲突 in multiple modules and/or libraries.....
我们平时使用一些三方库,一般都是直接在build.gradle直接引用,然后自己调用人家的API就行了,但仔细想想,我们还可以使用AAR依赖和module依赖。这是我常用的一个方法,因为之前Glide有个版本的库比较老,但是里面有个图片处理的功能,我经常用到,就会使用下面的方法把support库给干掉。我们在做日常的项目开发时经常会需要对接三方SDK或者使用一些三方依赖库已完成项目的需求,但是有时候会在拉入依赖库后报错库文件冲突。如果不能完全迁移到 AndroidX 或者你的项目中有第三方库依赖旧的。
2024-08-29 10:12:20 521
原创 Android 获取通话记录
在某些App的开发者,获取通话记录有时候是必要的(现在都要申请相对于权限哦,App上架得说明为啥获取此权限)。因为工作风控数据收集经常会用到,在此做个总结。
2024-08-28 19:02:27 593
原创 Android Handler机制使用及全面解析
仅是个人对Handler机制的理解,通过翻看源码和其他大佬对源码的阅读理解对此做了总结,文中不足的是对于nativePollOnce这个native方法做的深入了解不够多。后面如果还有其他没总结到的再写进来。
2024-05-31 13:49:31 1347
原创 Vue DEV报错has been blocked by CORS policy: Response to preflight request doesn‘t pass access 跨域问题
2.并且把axios里的baseURL改为空,就解决了。1.vite.config.js文件里配置。问题:本地DEV环境运行报错跨域问题。
2024-05-29 12:57:01 401
原创 Android Context 详解
Context是一个抽象基类。在翻译为上下文,是提供一些程序的运行环境基础信息。Context下有两个子类,是上下文功能的封装类(起到方法传递的作用,主要实现还是ContextImpl),而则是上下文功能的实现类。又有三个直接的子类,Service和。其中,是一个带主题的封装类,所说的主题就是指在AndroidManifest.xml中通过android:theme为Application元素或者Activity元素指定的主题,而它有一个直接子类就是Activity,所以Activity和Service。
2024-05-29 12:54:29 1716
原创 Android Intent 使用及其详解
Intent是Android系统用来抽象描述要执行的一个操作,也可以在不同组件之间进行沟通和消息传递。Intent意图可以是明确的指定组件的名称,这样你可以精确的启动某个系统组件,比如启动一个Activity。它也可以是模糊的,没有指定组件名称,只要是能够匹配到这个Intent的应用都可以接收到,比如发送一个拍照Intent,所有的拍照应用都会响应。
2024-05-28 23:06:30 3276 1
原创 Android Service 启动流程
在早些年学习Android的时候,对Service有过总结,但是主要是如何去使用,注意事项,startService和bindService的区别。但是今天从源码来总结下framework层的启动流程大致是什么样的。
2024-05-28 12:12:46 2292
原创 Activity启动流程要点
View组件的绘制流程会在onMeasure,onLayout以及onDraw方法中执行分发逻辑,也就是在onMeasure同时执行子View的测量大小逻辑,在onLayout中同时执行子View的测量位置逻辑,在onDraw中同时执行子View的绘制逻辑;Activity的界面绘制是从mDecor即根View开始的,也就是从mDecor的测量大小,测量位置,绘制三个流程;View的绘制流程包含了测量大小,测量位置,绘制三个流程;View的绘制流程:onDraw等方法;
2024-05-27 15:03:25 899 1
原创 Android App启动流程和源码详解
之前看了些App启动流程的文章,但是看得很浅显,隔了没多久就忘了,自己抓耳挠腮的终于看完了,看得头疼哦。因为很多是个人理解,大哥们主打一个7分信,2分思考,1分怀疑哈。主要看的源码是Android 9 的源码,因为很多framework的代码在AS里面看需要配置,我没配好,于是找了几个网站,最后综合下来用的这个Android社区 - https://www.androidos.net.cn1.在Android中,通过包名和Activity类名就可以打开一个APP。
2024-05-24 21:08:00 1610
原创 关于个人对Android未来的思考
现在的Android开发,薪资好一点的,公司大一点的,它不但要求你会常规的Android业务开发,例如各类场景开发,Android适配,App各类优化,常规的框架使用,对比,源码分析,设计模式,还要求你对底层代码的阅读量和理解能力,还有就是思考,他为什么这么设计?既然要的薪资基本在成都属于普通开发中的上层了,那么对自己的技术要求也得更高,技术的宽度并不会帮助我去解决开发中的疑难杂症,认真的去剖析底层源码才是我目前最需要的,一个开发,若没有技术深度,对于以后的职业规划也是相当不友好的。
2024-05-23 10:37:13 707 3
原创 Android JetPack ViewModel
Android ViewModel在我们使用MVVM开发模式时会经常用到,对我来说就是好用,好维护。它相对于MVC模式,Activity配置更改重建时(比如屏幕旋转)保留数据UI组件(Activity与Fragment、Fragment与Fragment)间实现数据共享。在我们某些App的界面,按照业务需求是需要进行屏幕翻转的。所以就会发生activity 重新创建。当发生配置变更时,系统会重新创建 Activity。
2024-05-22 09:54:19 1151
原创 Android JetPack Databinding使用及解析
DataBinding 是谷歌官方发布的一个框架,是 MVVM 模式在 Android 上的一种实现,减少了布局和逻辑的耦合,数据能够单向或双向绑定到 layout 文件中,有助于防止内存泄漏,而且能自动进行空检测以避免空指针异常。优点:双向绑定,减少大量的findviewById代码,结合其他的jetpack组件使用开发效率大大提高。缺点:增加包体积,编译速度(影响很小)
2024-05-17 15:38:56 1054
原创 Web开发小知识点(二)
今天在使用element的el-dialog组件的时候,发现很多属性设置不了,满足不了业务的需求。后面问了同事,才知道可以用以下方法去解决1.网页的查看源码这样就可以看到他里面实际的css样式格式。2.接下来就是重写他的样式,如果直接写是无法生效的,需要:deep()才行,例如3.查看是否生效刷新后,检查UI,再查看样式是否生效了。
2024-05-12 13:27:46 934
原创 css设置输入框边框无效或者不展示边框
因为在触发:focus时,用作突出的边框色,是由outline控制的,即获得焦点时,会被一个轮廓虚拟框围绕,而轮廓虚线框就是 outline。发现输入框input以及textarea样式css标签:focus更改样式无效这个问题。border-color: #824DFF 无效,于是试着改了下outline就生效了。bug描述:在聚焦的时候,期望输入框的边框是主题色,但是不知道是个啥颜色。所以 设置outline: 1px solid #824DFF;如果想要边框不可见,设置outline: none;
2024-04-23 15:19:32 851
原创 Flutter——用户关闭键盘后强制拉起键盘
单独处理,输入框在聚焦情况下,用户手动关闭键盘,下次点击输入框仍无法弹起,先让组件失焦然后聚焦就可以弹起键盘了。今天在弄输入框的时候,发现用户手动关闭键盘后,因为自定义组件的特殊性,我在点击输入框后并没有唤起键盘。但是在我这边的需求里,当用户手动关闭键盘时,他还在聚焦,我这时候,点击输入框,但是它并不会弹起来,于是。我们直接聚焦,就可以弹起键盘。来监听键盘的可见性状态。的值来判断键盘是否关闭。小部件关联起来,并使用。属性将其与之前创建的。
2024-03-28 16:13:27 1356
原创 Flutter开发入门——路由
移动端应用开发中,路由技术是一个非常重要的组成部分。路由技术负责管理应用中各个页面之间的跳转、导航以及参数传递等关键功能。在移动端应用中,一个高效、易于维护的路由系统对于提高开发效率和用户体验具有重要意义。Flutter 中的路由管理和原生开发类似,无论是 Android 还是 iOS,导航管理都会维护一个路由栈,路由入栈(push)操作对应打开一个新页面,路由出栈(pop)操作对应页面关闭操作,而路由管理主要是指如何来管理路由栈。// 创建一个Intent对象,指定要跳转的Activity。
2024-03-19 13:50:52 1747
原创 Flutter开发入门——Widget和常用组件
1、什么是Widget?在Flutter中几乎所有的对象都是一个 widget。与原生开发中“控件”不同的是,Flutter 中的 widget 的概念更广泛,它不仅可以表示UI元素,也可以表示一些功能性的组件如:用于手势检测的、用于APP主题数据传递的Theme等等,而原生开发中的控件通常只是指UI元素。可以说,万物皆可Widget。用于不需要维护状态的场景,它通常在build方法中通过嵌套其他 widget 来构建UI,在构建过程中会递归的构建其嵌套的 widget。
2024-03-14 11:27:43 2043
原创 Flutter入门学习——Flutter和Dart
Flutter 是 Google 推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart 语言开发 App,一套代码同时运行在 iOS 和 Android平台。Flutter 提供了丰富的组件、接口,开发者可以很快地为 Flutter 添加 Native(即原生开发,指基于平台原生语言来开发应用,flutter可以和平台原生语言混合开发) 扩展// 下面代码在dart中会报错,因为变量t的类型已经确定为String,// 类型一旦确定后则不能再更改其类型。t = 1000。
2024-03-11 19:34:53 1397
原创 Android 屏幕适配方案总结
Android 的屏幕尺寸多种多样,如 5 寸、5.5 寸、6 寸 等等,当然,屏幕分辨率也是多种多样,这很容易导致同一元素在不同手机上显示的效果不同的问题。本文章作为自己项目平时编写中的一些常用屏幕适配总结,方案1,3,4都用过,挺不错的。
2024-02-19 12:17:08 1168
原创 Android View解析
1.View是用户接口组件的基本构建块;2.View在屏幕上占据一个矩形区域;3.View通过绘制自己与事件处理两种方式与用户交互设计View,主要是为了让应用能够与用户交互,要想完成交互,这个View就要在屏幕上占据一个矩形区域,然后利用这块屏幕区域与用户交互,交互的方式就两种,绘制自己与事件处理。自定义View是Android开发中的重要概念,允许你创建不同于标准UI组件的用户界面元素。这些自定义View可以是各种形状、颜色和交互方式,完全满足你的设计需求。
2024-02-02 17:17:24 1433
原创 Java 类的加载流程
指的是将类的.class 文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class 对象,用来封装类在方法区内的数据结构。类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:、使用和卸载七个阶段。
2024-01-30 18:41:58 2304
原创 Android性能优化系列——APK包优化
原因是在2018年,v7版本的SO库可以满足市面上绝大多数的要求,可能八九年前的手机满足不了,但我们也没必要去适配老掉牙的手机。实际开发中减少apk体积的效果是十分显著的,如果你使用了很多SO库,比方说一个版本的SO库一共10M,那么只保留v7版本,删掉armeabi和v8版本的SO库,一共可以减少20M的体积。一个APK文件内包含被编译的代码文件(.dex 文件),文件资源(resources), assets,证书(certificates),和清单文件(manifest file)。
2024-01-09 11:32:06 1296
原创 Android性能优化——启动优化
一个App的启动流程的至关重要 ,这是用户启动App后对App的第一印象。在一些小型项目上,如何去优化启动显得无足轻重,但是当一个项目达到足够的量,业务设计足够多时,若不注意app的启动优化,则会出现很多问题。例如一些三方插件的初始化,网络请求初始化,数据库,io操作,动画等等,这无疑都会增加初始化的工作量。如果全都把一些事务放在App启动的时候,则会造成卡顿,黑白屏等现象,这样会带来极差的用户体验。今天,来总结下自己平时会在项目中用到的App启动优化。
2024-01-09 10:38:07 1114
原创 Android性能优化系列——内存优化
是Android应用的生命线,一旦在内存上出现问题,轻者内存泄漏造成App卡顿,重者直接crash,因此一个应用保持健壮,要做好内存的使用和优化。作为一个开发者,需要在平时的代码中就要多注意,如有不合理的地方,则需要进行优化。内存泄漏就是在当前应用周期内不再使用的对象被GC Roots引用,导致不能回收,使实际可使用内存变小,通俗点讲,就是无法回收无用对象。系统在申请内存空间时,没有总够的内存空间供其使用。
2024-01-08 22:23:06 1144
原创 Android性能优化系列——UI优化
在写我们的界面和业务的时候,UI的优化便会显得至关重要。因为当你的UI代码写得很垃圾的时候,就会造成卡顿,丢帧等现象(造成卡顿的原因很多,UI只是其中一中)。Android 应用的卡顿、丢帧等,这些影响用户体验的因素绝大部分都与16ms这个值有关。Android 设备的刷新率也是 60Hz,Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果超过了16ms,我们则认为发生了卡顿。
2024-01-07 17:01:29 1471
原创 Android 实现环形进度条
progressDrawable属性:确定进度条的背景,进度条颜色等等。项目中常常需要用到进度条,很简单,这儿做一个简单的总结和实现。mmmmmm.xml:drawable文件代码。style属性:确定他是什么类型的进度条。可以看出来这儿和上面是大不一样的。aaa drawable文件。里面的属性就是字面意思。
2023-11-29 15:54:10 2716
原创 Android 分享图片和文案
如果设置,此Intent的收件人将被授予对Intent数据中的URI及其ClipData中指定的任何URI执行读取操作的权限。大多数App的需求中,有分享功能,点击唤起系统的分享栏,然后分享内容,例如指定文案,链接,图片等等。2.the.shy.world.top.one.myapplication替换为你的包路径。4.使用Intent实现分享,在intent里put Extra()图片和文本。根据控件临时生成一个图片进行分享,具体的逻辑请看实现代码,代码中有注释。2.图片拿到缓存里,用于分享。
2023-11-06 11:43:01 1047
原创 Android 接入ttf字体文件
这样,你就可以在 TextView 中使用自定义的 TTF 字体了。确保 TTF 文件位于正确的目录并指定正确的资源引用。在字体文件准备好后,你可以在 TextView 中使用。然后实现 TTF(TrueType Font)字体文件并将其应用到 TextView。一些炫酷的App总会加一些App自己的字体。这时候需要找UI提供ttf字体文件。属性中,你可以指定 TTF 字体文件的资源引用,例如。目录下的字体文件的名称,或者使用。3. 在业务逻辑代码中。
2023-11-06 11:11:14 3596
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人