自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 收藏
  • 关注

原创 android 安全防护

文章目录一.混淆二.配置防止抓包三.加固四.判断证书正确性4.1 获取当前证书sha4.2 调用so包中方法去判断是否正确五.判断当前环境5.1 判断当前环境是否root5.2 判断当前环境中是否存在xposed等app4.3 退出程序一.混淆之前的文章有介绍二.配置防止抓包 okHttpClient = new OkHttpClient.Builder() //防止抓包设置 .prox

2022-03-25 11:16:50 2319

原创 小米手机解锁,root

文章目录一.解锁(bootloader)1.1 申请解锁权限1.2 装工具后登录小米账号到这一步二.刷入recovery并root2.1 在twrp官网中没找到zip的安装包,只有临时的img文件,不想下载的我这儿有提供[一键刷入的程序](https://pan.baidu.com/s/1XimSPVu1rgNJvslUjPbL-g)(nx7z),不过在这之前首先下载[面具的固件](https://pan.baidu.com/s/1p85CV5wyEzpLXwtHo136QQ)(3vpn)放到手机存储中2.

2022-03-25 10:42:26 3044

原创 Android 组件化跳转核心方法

前名一个参数是应用程序的包名,后一个是这个应用程序的主Activity名 Intent intent=new Intent(); intent.setComponent(new ComponentName("com.droidnova.android.games.vortex", "com.droidnova.android.games.vortex.Vortex")); sta

2022-03-09 15:36:20 2376 1

转载 Android RecyclerView使用notifyItemRemoved()移除数据时数据错乱

在使用notifyItemRemoved()这个方法时,由于该方法不会使position及其之后位置的itemView重新onBindViewHolder,重新刷新后面的数据会导致下标错乱。有可能产生一些坑爹的bug。解决方法,通知其后数据刷新,并且一定要记得移除源数据源中要移除的数据。 mDeliveryOrderList.remove(i); mDeliveryAdapter.notifyItemRemoved(i); if (mGetPosition != mDeliveryOrderList.

2022-03-09 15:26:48 1663

原创 android Jetpack--Navigation

文章目录一.简介二.优劣势2.1 优势2.2 劣势三.使用3.1 引入依赖3.2 创建三个fragment3.3 编写navigation xml跳转流程3.4 根据跳转流程编写跳转代码和传参3.5 将NavHostFragment放到activity中一.简介Navigation是一个可简化的Android导航的库和插件,换句话说,Navigation是用来管理Fragment的切换的,并且是通过可视化的方式来进行管理的。二.优劣势2.1 优势处理Fragment的切换默认情况下正确处理

2022-02-08 16:04:40 1642

原创 同一个电脑配置多个git账号

文章目录1. 删除全局user信息2.生成新的邮箱对应的sshkey3.将生成的公钥信息配置的远程仓库上4.创建.ssh/config文件5.每次创建新项目的时候都要配置user信息我们使用一台电脑的时候,很可能配置多个git账号(此教程默认已经配置好一个git账号)1. 删除全局user信息--取消全局配置git config --global --unset user.namegit config --global --unset user.email2.生成新的邮箱对应的sshkeys

2021-09-01 17:55:07 358

原创 git 基本操作

文章目录记录一下git的基本操作,配合流程1.创建本地git仓库2.查看git仓库状态3.cuacuacua写代码4.向缓存区添加代码5.保存仓库代码6.查看提交记录7.设置名称和邮箱8.和远程仓库建立链接9.拉取远程仓库最新代码(团队开发)10.提交代码到远程仓库分支1.创建,切换分支2.创建分支3.切换分支4.合并分支记录一下git的基本操作,配合流程1.创建本地git仓库git init2.查看git仓库状态git status3.cuacuacua写代码4.向缓存区添加代码git

2021-09-01 16:43:11 142

原创 android studio 使用git上传gitlab

文章目录1.创建市场(gitlab创建项目)1.1 打开gitlab点击new project1.2 选择创建一个空项目1.3 填写项目信息1.4 创建结束后就是这样2.创建工厂(创建git仓库)3.市场和工厂签合同(本地仓库和远程仓库关联)4.将不合格的零件筛选掉(设置忽略文件)4.1 配置忽略文件5.将零件打包(代码add到本地仓库)6.将打包好的零件存在工厂(保存本地项目到本地仓库)6.1 团队开发6.2 独立开发7.将零件从工厂送到市场(push到gitlab)参考文章:https://www.

2021-08-30 14:35:01 1631

原创 kotlin 继承

文章目录继承1. 被继承2.继承1. 被继承如果一个类要被继承 得使用open修饰open class Perple(){}2.

2021-08-09 15:33:19 996

原创 kotlin 数据类

文章目录1. 数据类注意copy函数1. 数据类数据类使用data作为前缀进行修饰,被data修饰的类会创建如下函数equals() toString() componentN() copy()实例data class User(var name : String,var age: Int){}注意主构造器必须包含一个参数所有的主构造器的参数必须用var/val 修饰数据类不能使用abstract open sealed inner 修饰数据类不能继承其他类,但可以实现接

2021-08-09 14:08:42 83

原创 kotlin 扩展

文章目录1. 简介2. 如果拓展函数和成员函数一致,测优先使用成员函数1. 简介扩展是对一个类的属性和方法的补充,这种扩展不会对被扩展的类本身造成影响class User(){ xxx}对User扩展一个函数fun User.name(){}格式为:fun 被拓展对象.拓展函数名称(拓展参数){ 方法体}对User拓展一个属性拓展属性允许定义在类或者kotlin文件中,不允许定义在函数中,初始化属性不允许被初始化,只能由显示提供getter/setter扩展属性只能被

2021-08-06 14:08:20 97

原创 kotlin 接口

文章目录1. 简单使用(标配)1.1 实现接口2. 接口中的属性3. 函数重写1. 简单使用(标配)以interface开头interface People{ fun name() 可自己实现方法,就不强制从写 fun age(){ print("xxx") }}1.1 实现接口class childre : People{ override fun name(){ 方法体 }}Childre childre = Childre()childre.name()这

2021-08-05 17:00:20 196

原创 kotlin 类和对象

文章目录类1.属性1.1 定义属性1.2 getter setter1.3 lateinit 关键字2. 主构造器和初始化代码段3. 次构造器4. 抽象类5. 嵌套类6. 内部类7. 类的修饰符类1.属性1.1 定义属性class Perple{ var name : String ="" 可变属性 val sex : String ="" 不可变属性}1.2 getter settervar allByDefault: Int? // 错误: 需要一个初始化语句, 默认实现了 get

2021-08-04 17:09:09 125

原创 kotlin 循环控制

文章目录for1. 简单示例2. 获取索引/索引和值while 与 do...while1.返回和跳转2.标签for1. 简单示例 for(a in name){ print("$a") }2. 获取索引/索引和值1.获取list或者数组的索引for(a in array.indices){ print(array[a])}2.获取list或者数组的索和值for ((index, value) in array.withIndex()) {

2021-08-04 14:14:15 76

原创 kotlin 基本数据类型

文章目录基本数据类型比较两个数字类型转换布尔数组四种创建数组方式获取数组数据方式字符串模板如果要输出$怎么办基本数据类型类型位宽度byte8short16int32float32double64long64比较两个数字== 为比较两个数字的值=== 为比较两个数字的地址类型转换每种数据类型都有下面的这些方法,可以转化为其它的类型:toByte(): BytetoShort(): ShorttoInt(): InttoL

2021-08-03 18:02:25 194

原创 Kotlin 条件控制

文章目录if1.简单示例1.1. 作为表达式when(相当于java的switch)2.1 简单示例2.2 多分支整合2.3 in 和 isif1.简单示例if (name[0].equals("你好")){ print("xxx") }else if (name[0].equals("xxx")){ print("xxx") }else{ print("xxx") }1.1. 作为表达式

2021-08-03 17:00:20 75

转载 Rxjava

文章目录1.Rxjava 简介2.大概轮廓3.Observable3.1 创建observable4.Observer4.1 创建Oberver5.subscribe5.1 进行订阅5.2 拆解onNext,onError,onCompleted6.Schedulers1.Rxjava 简介其实, RxJava 的本质可以压缩为异步这一个词。说到根上,它就是一个实现异步操作的库,而别的定语都是基于这之上的。 —扔物线2.大概轮廓举例

2021-07-30 10:41:46 99

原创 Http 请求头Range(android 断点续传)

文章目录1.Range简介2.andorid retrofit如何使用2.1 设置接口2.2 发起请求1.Range简介The Range 是一个请求首部,告知服务器返回文件的哪一部分。在一个 Range 首部中,可以一次性请求多个部分,服务器会以 multipart 文件的形式将其返回。如果服务器返回的是范围响应,需要使用 206 Partial Content 状态码。假如所请求的范围不合法,那么服务器会返回 416 Range Not Satisfiable 状态码,表示客户端错误。服务器允

2021-07-29 10:58:16 992

原创 java RandomAccessFile

文章目录一. RandomAccessFile简介二.RandomAccessFile方法2.1 long getFilePointer()void seek(long pos) 将文件记录指针定位到pos位置2.3 void setLength(long a) 设置文件长度(字节为单位)3.四个模式一. RandomAccessFile简介RandomAccessFile是Javasr/输出体系中功能最丰富的文件内容访问类,他不仅能够读取文件,也可以向写入文件,并且能够指定任意的位置来读写Ra

2021-07-28 14:31:51 185

原创 java IO

文章目录1.File1.1File相关方法1.2 FilenameFilter 文件过滤器2 IO流2.1 流的分类1.FileFlie类是java.io 包下代表与平台无关的文件和目录,也就是说,如果需要在程序中操作文件和目录,都可以通过File完成1.1File相关方法String getName() 返回此File对象的文件名或者路径名(如果是路径名,则返回最后一级路径名)String getPath() 返回此File对象对应的路径名File getAbsoluteFile() 返回

2021-07-27 16:28:10 87

原创 android 处理配置变更

文章目录1.配置变更2.处理配置变更之:在配置变更期间保留对象3.处理配置变更之:自行处理配置变更3.1通过配置阻止activity重启3.2 配置变更监听1.配置变更某些设备配置可能会在运行时发生变化(例如屏幕方向、键盘可用性,以及当用户启用多窗口模式时)。发生这种变化时,Android 会重启正在运行的 Activity(先后调用 onDestroy() 和 onCreate())这种问题如果不处理会导致本来已经捆绑到控件上的数据发生丢失,以下便是如何处理这种问题的两种解决方法(第一个是保存数

2021-07-20 14:59:40 259

原创 Android 概述

Android概述Android系统是一个多用户的Linux系统,每个用户都是单个Linux用户,每个app都有一个用户id,每个应用都在自己的进程中运行,每个进程都拥有自己的虚拟机.记忆模型

2021-07-20 10:52:38 90

原创 android 动态替换logo

文章目录标签\简单使用动态设置启动配置通过PackageManager可以动态的这是启动配置setComponentEnabledSetting官网介绍setComponentEnabledSetting方法中第二个参数的含义setComponentEnabledSetting方法最后一个参数的含义标签<activity-alias>首先来熟悉一个标签<activity-alias>,来看看官网的介绍Activity 的别名,由 targetActivity 属性命名。目标必

2021-07-16 15:05:15 814

原创 android webview

文章目录1.webview 简介2.webview三部分2.1 webview本身方法2.2 webview.getSetting2.3 webview 各种监听3.模板示例1.webview 简介webview是一个用来展示web页面的框架控件,webview可以用来渲染web页面,也可以直接使用本地的html文件,也可以用来和js交互调用2.webview三部分2.1 webview本身方法1.加载网页 //方式1. 加载一个网页: webView.loadUrl("http://ww

2021-07-12 09:40:49 186

原创 android 处理闪屏

文章目录设计并创建闪屏页设置主activity的theme在onCreate中删除setContentView在网上有很多处理闪屏的方法,但是我发现目前效果最好的,大家常用的还是设置主activity的背景,接下来就来看看怎么设置吧设计并创建闪屏页之前有写layer-list效果是代码为<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk

2021-07-01 14:19:13 750 1

原创 android layer-list

文章目录layer-list 简介创建layer-list例子0.明确目标1.在drawable文件夹创建xml2.创建layer-list3.创建itemitem中的其他属性item本身的属性layer-list 简介简单理解,layer 是层,list 是列表,那么 layer-list 就是层列表的意思。图层顺序由上到下依次覆盖,一个图层就创建一个item创建layer-list例子0.明确目标我们要创建一个APP闪屏的背景,效果大概是这样1.在drawable文件夹创建xml2.

2021-07-01 14:09:41 679

原创 android 动态设置布局LayoutParams

文章目录创建LayoutParams1.获取现有的LayoutParams2.创建新的LayoutParams设置参数添加视图完整代码我们在设计页面的时候,有可能需要动态的设置页面的位置,例如动态获取状态栏的高度,并把这个位置空出来,可以使用LayoutParams来实现,LayoutParams类是用于child view(子视图) 向 parent view(父视图)传达自己的意愿的创建LayoutParams1.获取现有的LayoutParams如果只是想动态的修改当前布局的某个值,只要获

2021-06-30 18:20:16 5142 2

原创 使用 ViewPager2 在 Fragment 之间滑动

文章目录创建viewpager2添加fragment集合到viewpager2创建viewpager2在xml中创建viewpager2 <androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="0dp" app:layout_const

2021-06-29 17:02:39 587

原创 android:overScrollMode

文章目录作用如何使用1.在xml中进行设置2.在代码中设置详解viewpager2 设置android:overScrollMode无效作用xml中对可滑动的控件设置滑动到顶部或者底部时是否有阴影,例如下图右侧的蓝色阴影如何使用1.在xml中进行设置<android.support.v7.widget.RecyclerView android:id="@+id/rv_recycle_view" android:layout_width="match_parent" a

2021-06-29 16:00:55 9659

原创 moveTaskToback

文章目录作用如何使用详解作用将应用退到后台如何使用//按返回键的时候不希望退出(默认就finish了),而是只希望置后台,就可以调这个方法@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK){ moveTaskToBack(true); return true; }

2021-06-29 15:38:56 154

原创 intent 跳转注意点

对于简单的intent显示跳转和隐式跳转就不写了,说说intent跳转的注意点隐式intent跳转记得trycatch对于intent隐式跳转时,如果不确定是否存在目标activity,需要对intent进行trycatch editText.setOnClickListener(view -> { Intent intent = new Intent(); intent.setAction("jjcc"); try {

2021-06-25 17:16:17 184

原创 android 11适配

以 Android 11 为目标平台的应用强制执行分区存储在android10就已经开始推了,不过是可以在清单文件中进行适配跳过,但是那只是权宜之计,长久不了,在android11上运行以API为29的应用仍然可以使用requestLegacyExternalStorage去暂时适配,但如果API为30的时候,系统就会忽略requestLegacyExternalStorage标签.还是切换到沙盒机制吧,迟早的事.如何在沙盒存储自动重置权限如果用户几个月未与应用互动,系统会自动重置应用的敏感

2021-06-23 18:05:08 391 2

原创 android 10适配

外部存储访问权限对于以 Android 10 及更高版本为目标平台的应用,文件访问权限会有分区的限制,分为内部存储和外部存储内部存储: /data 目录。一般我们使用getFilesDir() 或 getCacheDir() 方法获取本应用的内部储存路径,读写该路径下的文件不需要申请储存空间读写权限,且卸载应用时会自动删除。外部储存:/storage 或 /mnt 目录。一般我们使用getExternalStorageDirectory()方法获取的路径来存取文件。我们访问不到了sdcard

2021-06-23 14:01:30 288

原创 可视化界面:Activity 详解

标题Activity 简介对于移动应用来说,不一定每次打开项目都是同一个位置,例如你收到一条微信信息,你点开推送,那么打开微信的第一个页面就是聊天页面,而你第一次下载微信,打开的却是登录页面.这就是对于不同的页面就是ActivityActivity 类的目的就是促进这种范式的实现。当一个应用调用另一个应用时,调用方应用会调用另一个应用中的 Activity,而不是整个应用。通过这种方式,Activity 充当了应用与用户互动的入口点。您可以将 Activity 实现为 Activity 类的子类。大多

2021-06-22 23:20:32 1245 1

原创 android 9.0适配

针对所有应用的行为变更以下行为将会影响所有的应用,无论targetSdkVersion值为多少隐私权变更1.后台对传感器的访问受限如果您的应用在运行 Android 9 设备的后台运行,系统将对您的应用采取以下限制:您的应用不能访问麦克风或摄像头使用连续报告模式的传感器(例如加速度计和陀螺仪)不会接收事件。使用变化或一次性报告模式的传感器不会接收事件。 如果您的应用需要在运行 Android 9 的设备上检测传感器事件,请使用前台服务。2.限制访问通话记录Android 9

2021-06-22 18:27:50 549

原创 android 8.0适配

一. 通知Android 8.0引入了通知渠道,针对不同的通知划分了不同的分组,这样就可以针对一组类型的通知统一管理,例如在公司使用微信,就不想让消息通知一直震动铃声,但是把手机开静音可能会漏电话,我一般这样操作1.原始用法首先创建NotificationManager来管理NotificationNotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);创建Notif

2021-06-22 17:16:12 608

原创 android 7.0适配

FileProvider在android 7.0的设备上,禁止file://url通过intent的方式离开你自己的应用,如果要在应用之间共享文件,得发送content://url,如何发送这样类型的url呢? 通过FileProvider在清单文件中注册provider<manifest> ... <application> ... <provider android:name="androidx.core.content.F

2021-06-22 11:26:51 299

原创 android 我来告诉你图片应该放在那个文件夹下

零.为什么写这个博客不知道在哪里瞅了一眼,android官方说res下的mipmap文件夹是用来放图标的,drawbale是用来放项目中资源图片的,我之前好像都放错了,把资源图片都放在mipmap中了,而且我随便找了一个图片(测试,自己随便瞎搞),不知道应该放在那个包下了,所以想总结一下并解决以上问题标题一,熟悉 px dpi dp 等单位的含义px:像素单位,常常说的手机像素1080x1920的单位就是像素,一个像素点就是1px,我们常说的某个手机是1080x1920的像素指的是屏幕的宽排列着108

2021-06-18 14:03:02 8721 1

原创 retrofit rxjava 获取错误状态码

在使用retrofit+rxjava 的时候好像不知道哪里找请求失败的错误码 其实在observer的回调的方法中 onError方法中去判断Throwable 的类型,如果是httpException的话 就强转一下就找到了messageCodeBeanObservable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<LoginCodeBean>()

2021-06-09 10:12:48 593

原创 Android 申请动态权限

一.检查权限二.申请权限三.接受权限回调情况

2021-06-07 17:45:23 162 4

空空如也

空空如也

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

TA关注的人

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