自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

繁鑫..的博客

小菜鸟的学习笔记

  • 博客(45)
  • 收藏
  • 关注

原创 Android11 framework 禁止三方应用通过广播开机自启动-独立方案

思考:这里的log打印能拿到进程名,以及监听的广播,且从log看,这里就是管理是否启动的。如果从这里拦截,能让监听此广播的应用不执行启动逻辑,比上一篇文章单纯的不让执行任何逻辑合理。这一篇文章主要探讨Android11上,以广播来进行自启动的应用的限制,极个别用provider实现自启动的应用方案(点名批评we信),我现在暂时还没有研究学习。记录了我调试Android11应用自启动限制的全过程,但是之前的方案感觉还能再研究,所以有了这一篇文章。针对使用广播启动的三方应用,在。​,找到打印log的地方。

2024-07-22 16:52:12 592

原创 Android11 framework 禁止三方应用开机自启动

按理说三方应用应该收不到开机启动广播(后文会证实这个说法是假的),但是很神奇的是还是有应用能自启动,体现为比如秋秋,启动后通过ps命令能看到其进程存活,但是静置后进程会启动失败,从而导致被清理。​,看起来是时区变换的广播,这边尝试了一下在没有启动秋秋的情况下,去切换时区,果然打印了启动秋秋的log,虽然没有启动成功,但是之前在这个项目中,自己遇到过秋秋启动成功的情况,所以还是要处理。​方法中加入秋秋的判断,返回一个reason,这样此次启动能通过原生的逻辑进行拦截,比较安全。​类型进行自启动的,能否判断。

2024-07-19 10:22:01 1176

原创 Android11 framework Handler

Android framework handler学习笔记,基于Android11

2022-11-22 18:10:19 352 1

原创 Java注解和反射

注解和反射学习记录

2022-07-25 16:56:40 188

原创 SSL error when connecting to the Jack server. Try ‘jack-diagnose‘ 报错处理

SSL error when connecting to the Jack server. Try 'jack-diagnose' 报错处理问题描述:思路分析:解决方案:问题描述:如图无法连接jack server,可通过jack-diagnose查看详情思路分析:项目根目录下:cd prebuilts/sdk/tools可以看到有jack-diagnose文件,根据提示信息运行此文件. jack-diagnose可看到端口被占用导致连接失败解决方案:相关的解决方法如下h

2022-02-18 15:02:55 6101 3

原创 git log 显示中文乱码

提交命令的时候使用utf-8编码集提交git config --global i18n.commitencoding utf-8日志输出时使用utf-8编码集显示git config --global i18n.logoutputencoding utf-8 设置LESS字符集为utf-8export LESSCHARSET=utf-8

2022-02-18 11:50:43 454

原创 Andorid SELinux策略、te语法、avc权限总结

浅谈te语法前言1.引言2.基本定义2.1 用type关键字定义类型2.2 用typealias声明别名2.3 attribute关键字声明属性/域2.4 类型与属性/域相关联3.基本语法3.1 rule_name3.2 source_type3.3 target_type3.4 class3.5 perm_set4.通常avc权限配置前言好久没更新了,去年忙到年底,终于闲下来了,现在开始对近期的学习做一个总结1.引言SElinux是Google在android4.3版本上引入的,只不过是默认关闭

2022-02-16 16:04:21 3769

原创 Android Handler引发的内存泄漏解决方法

问题描述:在handler使用中遇到了内存泄漏,一脸懵逼上网查阅资料后得到解决,希望记录下来以后翻阅原因分析:非静态、匿名内部类会隐式持有外部类的引用,这会导致一个什么结果呢,当Handler以非静态或匿名内部类的的方式存在Activity/Fragment中,并且还使用了Handler的延时操作,那么问题就大了,在延时的过程中,message会一直持有handler的引用,而handler又会一直持有外部类(Activity/Fragment)的引用,即使此时销毁外部类,引用也会存在,这样就造成内

2021-10-09 10:35:17 911

原创 Android 第一次使用WebView遇到的坑

WebView使用的坑项目场景:第一个坑!问题描述:解决方案:第二个坑!问题描述:解决方案:项目场景:在项目开发过程中,需要对图标进行网页跳转,尝试用WebView实现第一个坑!问题描述:我首先上网查询WebView入门demo,类似于跳转百度等这样的小demo,然后写出一个activity用来绑定WebView布局package com.sprocomm.tablelamp.ui.market;import android.annotation.SuppressLint;import

2021-09-23 11:40:29 778 9

原创 Android 系统音量和系统亮度静态方法

项目场景:提示:这里简述项目相关背景:例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大)问题描述:提示:这里描述项目中遇到的问题:例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据APP 中接收数据代码:@Override public void run() { bytes = mmInStream.read(buffer); mHandler.obta

2021-09-22 10:25:15 171

原创 Android 计时器重复启动Activity问题(实际为发送广播的坑)

项目场景:前两天在项目开发过程中,遇到这样的场景,需要做一个时间钟功能,开启时间钟后,在规定的时间(相对时间)到达后,弹出一个Activity。问题描述:上述的场景实现不难,通过开启时间钟功能发送广播,在广播接收器中定义Handler计时器,规定时间到达时启动Activity即可。然而,我发现,在规定时间到达时弹出的Activity是两个,哪怕我把这个Ac设定成singleTop启动模式依旧不能解决,这说明启动的这两个Ac实例并不是在一个栈中的。苦思不得其解后,我请教了前辈。原因分析:我们的

2021-08-30 11:53:37 404

原创 Android 全局获取Context/Activity实例的方法

问题描述:项目过程中,同事需要我提供我负责模块功能调用的对外接口。为了提供对外接口,我创建了一个普通类用来当作静态方法类,但是在Android中,很多的系统功能都要求提供当前Activity或是Context上下文,可是在普通类中要获取到Ac实例应该怎么处理呢解决方案:上网一顿查 全局获取context的方法果然被我找到了,大致意思是自定义MyApplication类继承Application,通过onCreate()方法初始化静态变量mContext,这样外界可以通过MyApplicati

2021-08-25 11:14:29 2103

原创 Android RecyclerView中Switch开关的复用问题

项目场景:因项目需要,在一个recyclerview的每个item中都加入了一个switch开关,用来控制某些设置项的功能问题描述:在代码初步完成后发现,第一个item中的开关会影响到后面所有的开关,而后面的开关会失效。 解决方案:通过这篇文章,我找到了解决的办法,效仿其中的代码解决了自己的问题,以此为记录,方便以后查看大致解决方法为:将所有开关的开启关闭状态从KV中取出,顺序地保存在数组中,把这些值添加进数组中,这部分代码就不放了private Boolean isBlueLig

2021-08-17 15:21:12 632

原创 Android 持久化技术 SharedPreferences存储

SharedPreferences存储前言一、什么是SharedPreferences存储?二、SharedPreferences1.SharedPreferences对象2.将数据存储到SharedPreferences中3.从SharedPreferences中读取数据总结前言持久化技术就是指将内存中的数据保存到存储设备中,内存中的数据是处于瞬时状态的,存储设备中的数据是处于持久状态的。持久化技术提供了一种机制,可以让数据在瞬时状态和持久状态之间进行转换。Android系统主要提供了三种方式用于

2021-08-11 15:27:54 331

原创 Android 持久化技术 文件存储

文件存储前言一、持久化技术简介二、文件存储1.将数据存储到文件中2.从文件中读取数据总结前言一、持久化技术简介持久化技术就是指将内存中的数据保存到存储设备中,内存中的数据是处于瞬时状态的,存储设备中的数据是处于持久状态的。持久化技术提供了一种机制,可以让数据在瞬时状态和持久状态之间进行转换。Android系统主要提供了三种方式用于简地实现数据持久化功能:文件存储、SharedPreferences存储以及数据库存储。本文主要讨论文件存储。二、文件存储文件存储对数据不做任何格式化处理,因此比较

2021-08-11 14:32:58 142

原创 Android BroadcastReceiver 发送自定义广播

发送自定义广播发送标准广播发送有序广播发送标准广播新建一个MyBroadcastReceiver,并加入接收的广播的代码,不然发送了不接收我们也不知道class BootCompleteReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { Toast.makeText(context, "Boot Complete", Toast.LENGTH_L

2021-08-10 17:26:32 222

原创 Android BroadcastReceiver 接收系统广播

BroadcastReceiver 接收系统广播广播机制简介接收系统广播动态注册监听事件变化静态注册实现开机启动广播机制简介Android中的每个程序都可以对广播进行注册,这样就只会受到自己关心的广播内容,这些广播可能是来自系统的,也可能是来自其他应用程序的,当然也可以发送广播。Android提供了一套完整的API允许程序自由地发送和接收广播。Android中的广播主要可以分为两种类型:标准广播完全异步执行的广播,效率高,无法被截断有序广播同步执行的广播,接收有先后顺序,意味着先收到广

2021-08-10 16:37:21 916

原创 Android RecycledView局部刷新的方法

https://www.jianshu.com/p/95bb00aafa18

2021-08-09 11:41:17 903

原创 Android 7.31-2 Seekbar拖动条控件

Seekbar控件Seekbar控件为拖动条基本属性除了id,布局属性等还有max、progress等等max指定拖动条的最大值,progress指定当前值,可以用progress属性给拖动条指定初始值 <SeekBar android:id="@+id/brightness_seekbar" android:layout_width="0dp" android:layout_height="wrap_content"

2021-08-02 11:36:48 152

原创 Android 7.31-1 binding的使用

binding的使用1.Activity中使用binding2.Fragment中使用binding3.Adapter中使用binding(用到后补充)1.Activity中使用bindingjava代码:public class SettingActivity extends BaseActivity { private ActivitySettingBinding binding; private List<SettingType> settingTypeList =

2021-08-02 11:05:18 817

原创 Android Fragment 7.29-1 Fragment的生命周期

Fragment的生命周期1 Fragment的状态和回调2 生命周期demofm的生命周期和ac的非常相似1 Fragment的状态和回调跟ac一样,fm也有四种状态运行状态当一个fm所关联的ac处于运行状态时,fm也处于运行状态暂停状态当一个ac进入暂停状态时(由于另一个未占满屏幕的ac被添加到了栈顶),与它相关联的fm也会进入暂停状态停止状态当一个ac进入停止状态时,与它相关联的fm就会进入停止状态,或者通过调用FragmentTransaction的remove()、r

2021-08-02 10:54:47 77

原创 Android Fragment 7.28-1 Fragment简介和使用方式

Fragment简介和使用方式1 Fragment是什么2 Fragment的使用方式2.1 简单用法1 Fragment是什么Fragment(fm)是一种可以嵌入在Activity(ac)中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用得非常广泛。fm和ac非常相似,可以理解为在一个ac中划分出多个fm,虽然这样一个fm可能就跟手机上一个ac一样大了。2 Fragment的使用方式先在Android Studio(AS)中创建一个Pixel C平板模拟器,然后新建Fra

2021-07-29 10:41:52 110

原创 Android 7.27-2 实战——聊天页面

聊天页面实战1 9-Patch图片的制作2 加RecyclerView依赖3 编写主界面activity_main.xml4 消息的实体类和RV的子项布局4.1 实体类Msg4.2 RV的子项布局5 适配器类MsgAdapter1 9-Patch图片的制作准备一对气泡图,如图(画图工具里面画就好了)如果我们直接把图片放到布局里面拉伸,会出现这样的结果就很丑,需要使用AS工具把图片转换为一种被特殊处理过的png图片——9-Patch图片将准备好的气泡图放进项目中,app/src/main/res

2021-07-28 09:41:44 308

原创 Android 7.27-1 控件RecyclerView

控件RecyclerView1.RecyclerView的基本用法2.横向滚动和瀑布流布局2.1 横向滚动2.2 瀑布流布局3.RecyclerView的点击事件1.RecyclerView的基本用法与之前的控件都不同,RecyclerView(RV)属于新增控件,要想在之前版本能够使用,需要在build.gradle中加入RV库的依赖。新建RecyclerViewTest项目,打开app/build.gradle文件,加入依赖如下:然后写入布局,需要注意的是,因为RV并不是内置在系统SDK中的,

2021-07-27 14:52:26 175

原创 Android 7.22-2——7.27 控件ListView

控件ListView1.ListView的简单用法2.定制ListView界面3.ListView的点击事件1.ListView的简单用法ListView控件应用于有大量数据需要展示的时候,允许用户通过手指上下滑动将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据会滚动出屏幕。新建ListViewTest项目,修改布局代码<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas

2021-07-27 10:54:37 153

原创 Android 7.22-1 自定义控件

自定义控件1.引入布局2.创建自定义控件1.引入布局iPhone手机的标题栏会有一到两个按钮来实现返回或其他操作,我们也可以这样在标题栏中写上布局。虽然Android系统已经给每个ac提供了标题栏功能,但是我们尝试一下自己定义。先想一下,每个ac的布局我们都需要一个标题栏,那不可能在每个布局中都去书写一遍代码,所以我们采用一种方式来解决这样的问题——封装思想,即通过引入布局来实现。新建项目:MyselfView,并在layout目录下新建一个title.xml布局,代码如下:<?xml ve

2021-07-22 15:10:38 70

原创 Android 7.21-2 用adb把log重定向到文件进行debug

今天导师给我出了个题目,他让我把服务器上的一个安卓系统里的Settings代码单编到测试设备,点击WiFi试试。我将编译好的apk安装到设备上,点击设置,wifi出现了这样的情况下面是排错方法:连接设备到电脑,打开cmd,输入adb logcat,发现会有巨多日志如果日志太多可以先adb logcat -c进行清除然后进行输出重定向输入adb logcat > log.txt回车开始写入日志然后进行出错的操作,这里是再去点击WiFi点完以后Ctrl+C退出然后打开用编辑器打开l

2021-07-21 18:03:32 690

原创 Android 单编步骤

单编步骤单编步骤Android系统项目的结构单编步骤source build/envsetup.shlunchcd packages/apps/Settings/mmAndroid系统项目的结构项目路径:文件结构:

2021-07-21 14:21:21 970 1

原创 Android 7.20-2 Activity的生命周期

Activity的生命周期3. Activity的生命周期3.1 返回栈3.2 Activity状态3.3 Activity生存期3. Activity的生命周期3.1 返回栈Android是使用任务(task)来管理Activity(ac)的,一个任务就是一组存放在栈里的ac的集合,这个栈也被称作返回栈,最新的ac总是在栈顶,当按Back键或调用finish()方法时,栈顶的ac会出栈,前一个入栈的ac就被顶到了栈顶。系统总是会显示处于栈顶的ac给用户。3.2 Activity状态每个ac在其生

2021-07-20 15:26:00 99 1

原创 Android 7.20-1 Intent

Intent2 用Intent实现Activity之间的跳转2.1 使用显示Intent2.22.32.42.52.62 用Intent实现Activity之间的跳转一个应用一般情况下不会就只有一个Activity,那么如何实现不同Activity之间的跳转呢2.1 使用显示Intent在当前包路径下New一个空Activity,勾选如图点击Finish,将自动生成的second_layout中的代码替换掉<?xml version="1.0" encoding="utf-8"?>

2021-07-20 14:47:11 240

原创 报错处理-Namespace ‘tools‘ is not bound

在<intent-filter>中加入tools:ignore属性时出现Namespace ‘tools’ is not bound错误处理方法,在manifest标签中加入xmlns:tools=“http://schemas.android.com/tools”如图:

2021-07-20 11:10:38 1732 2

原创 adb-常用命令

获取包名方法:先连接上手机,使用命令 adb shell am monitor;打开想要获取包名的APP即可adb shell pm list packages -s 找到要删除的包名获取包名的地址:adb shell pm path com.xx.xx挂载系统读写权限:adb remount删除包:adb shell rm /system/app/OldDriver/OldDriver.apk最后adb reboot重启就OK删除与包相关的所有数据,清除数据和缓存:adb shel

2021-07-19 17:43:00 158 1

原创 Android 7.19-1 Activity介绍

@TOC

2021-07-19 15:40:39 170 1

原创 Android 7.15-2 数据传递和向上导航

数据传递和向上导航1. 数据传递2.向上导航1. 数据传递在昨天的demo中,做到了点击MainActivity中的button跳转到TextViewActivity中显示写死的数据,现在试试把数据写在MainActivity中传递到TextViewActivity通过intent来传递数据,在Android官网对intent的介绍如下Intent 是在相互独立的组件(如两个 activity)之间提供运行时绑定功能的对象。1.先在MainActivity中声明常量EXTRA_MESSAGE作为

2021-07-15 11:33:55 94

原创 Android 7.15-1 Container和View

Container和View看到的一篇文章,现在看不太明白,存起来慢慢理解选择View还是Container

2021-07-15 10:11:34 158

原创 Android 7.14-2 UI组件

UI组件2.1 布局管理器2.1.1 LinearLayout线性布局2.1.2 RelativeLayout相对布局2.1 布局管理器最常用属性android:id # 可通过此属性找到控件android:layout_width # 宽度android:layout_height # 高度android:background # 背景(颜色、图片、xml文件)android:layout_margin # 外边距android:layout_padding # 内边距android:o

2021-07-14 18:35:50 64

原创 Android 7.14-1 项目结构和helloworld

1. Android开发概述-Android是Google开发的操作系统-Android开发是移动应用开发的表现形式之一-除了Android还有iOS、H5 App、Native+H5、RN、ionic、MUI等完整项目最精简流程为:Android→网络接口→数据库→网络接口→Android2. Android开发工具eclipse被淘汰了(google停止了支持),现在使用Android Studio(google推出的)-需要下载安装JDK3. 第一个Android应用hello w

2021-07-14 11:16:01 94 1

原创 Android学习7.13

Android学习笔记1. 创建项目和项目目录结构1.1 创建项目1.2 项目目录结构2. 运行应用2.1 在真实设备上运行2.2 在模拟器上运行2.3 运行结果1. 创建项目和项目目录结构1.1 创建项目create new project按要求输入相关信息即可注意:点击 Help me choose 链接可打开 Android Platform/API Version Distribution 对话框。此对话框会提供有关各 Android 版本在设备间的分布情况的信息。您需要权衡的主要因素

2021-07-13 17:33:05 75 2

原创 I/O输入输出

以下笔记均为手敲学习笔记。此贴仅供交流学习,转载请注明出处。如果有发现错误,希望可以联系博主进行修改。1.IO简介1.1继承结构in/out是相对于程序而言的输入(读取)和输出(写出)的过程。在Java中,根据处理的数据单位不同,分为字节流和字符流//在java.io包下//字节流:针对二进制文件InputStream--FileInputStream--BufferedInputStream--ObjectInputStreamOutputStream--FileOutputSt

2020-08-22 23:29:40 383

原创 Java集合笔记

以下笔记均为手敲学习笔记。此贴仅供交流学习,转载请注明出处。TreeSet和Map还没加进去,以后会更新。如果有发现错误,希望可以联系博主进行修改。1.概述1.1引入集合目前程序中,如果出现了多个数据需要存储,解决方案就是数组,但是数组的缺点却很明显:– 长度固定,数组一旦创建长度不可改变– 数组里元素的类型太单调,都是不统一的– 数组的遍历方式太单一,用下标遍历– 如果有大量的数据需要存储,可以使用集合– 集合工具类,都在java.util.*包里1.2继承结构– Collection

2020-08-22 23:27:22 183

空空如也

空空如也

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

TA关注的人

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