- 博客(65)
- 收藏
- 关注
原创 Android 通知组
从 Android 7.0(API 级别 24)开始,您可以在一个组中显示相关通知。图 1.收起(顶部)和展开(底部)的通知组。注意:如果应用发出 4 条或更多条通知且未指定通知组,则系统会在 Android 7.0 及更高版本上将这些通知自动分组。分组通知必须有一个额外的通知来充当通知组摘要。要启用分组通知,必须设置通知组摘要。此通知组摘要必须包含通知组中其他通知的部分文本,以便了解通知组的内容。
2024-06-27 21:22:34 844
原创 Java 二分查找法---常用的三种模板代码与分析
当剩下 2 个元素时,循环 / 递归结束。需要评估其余元素是否符合条件。查找可以通过访问数组中的单个索引来查找指定的target值。保证查找空间在每个步骤中至少有 3 个元素。使用元素的邻居来确定它是向右还是向左。搜索条件需要访问元素的直接左右邻居。二分查找的另一种进阶形式。
2024-04-12 14:56:36 420
原创 android 屏蔽系统通知
2.NotificationListener类是负责处理监听通知更新并将其传递给向用户显示的NotificationPresenter,也就是SystemUI中监听到系统通知的起点.
2024-03-29 10:55:38 420
原创 Android 通知--判断通知是否有跳转
在 Android 中,可以通过 PendingIntent 来实现有跳转的通知和没有跳转的通知的区别。具体来说,有跳转的通知会设置一个 PendingIntent,当用户点击通知时会触发该 PendingIntent,打开指定的界面或执行特定的操作;在上面的代码中,首先创建了一个有跳转的通知,并设置了一个 PendingIntent,用于处理用户点击通知时的操作。通过这种方式,用户点击有跳转的通知时会打开指定的界面(比如 MainActivity),而点击没有跳转的通知时则不会有任何操作。
2024-02-28 10:16:28 802
原创 mv 命令行修改文件名 或者 移动文件
命令不仅可以用来重命名文件,还可以用来移动文件。要将当前目录下的文件移动到另一个目录中,可以使用。文件,或者没有权限修改文件名,那么。需要注意的是,如果在当前目录下没有。需要注意的是,如果在当前目录下没有。文件,或者没有权限移动文件,那么。例如,如果你想将当前目录下的文件。在命令行中修改文件名可以使用。举个例子,如果你想将一个名为。
2024-02-26 16:36:44 1393
原创 adb pull 使用
表示当前路径,指示 ADB 将文件拷贝到当前命令行所在的路径下。这样,你就可以在不指定具体目录的情况下将文件拷贝到当前工作目录。是 Android Debug Bridge (ADB) 工具提供的一个命令,用于将设备上的文件拷贝到计算机上。命令,实现从 Android 设备上获取文件并保存到本地计算机上。文件将从设备上拷贝到你指定的本地路径中。例如,如果你想从设备上将。
2024-02-26 14:24:56 9247
原创 Ubuntu 安装 Android Studio
Android Studio 需要 Java 运行环境。通过以上步骤,可以在 Ubuntu 上成功安装 Android Studio,并开始进行 Android 应用程序的开发。进入解压后的 Android Studio 目录。你可以前往 Android Studio 的官方网站(安装完成后,你可以在应用菜单中找到 Android Studio,并创建一个启动器。脚本启动 Android Studio 安装向导。按照安装向导的指引完成 Android Studio 的安装过程。
2024-02-25 11:12:30 3115
原创 Ubuntu 安装Google浏览器
安装完成后,你可以在应用菜单中找到 Google Chrome,也可以通过在终端中输入。安装下载的 Google Chrome 安装包。打开终端(Terminal)。
2024-02-25 09:59:09 3092
原创 adb push 使用
执行命令后,等待文件传输完成。一旦传输完成,您应该在终端上看到相应的提示信息。使用cd命令导航到存储要推送文件的文件夹。打开终端(命令提示符)。
2024-02-23 14:53:47 4828
原创 Android 判断通知是进度条通知
属性来判断通知是否是进度条通知。这个属性可以用来表示通知的进度,如果通知是一个进度条通知,那么它的进度值会大于等于0。在 Android 中,可以使用通知的。应用监听安卓系统中的通知,需要区分出带进度条的通知.表示进度是否不确定(即进度条是否为循环模式)。构建一个通知时,可以通过调用。方法来添加一个进度条。参数表示最大进度值,
2024-02-06 11:32:57 1210 1
原创 Android 12.0 应用中监听系统收到的通知
上面两个接口,第一个是监听系统新通知,第二个是监听系统通知清除,如果看过Android Systemui 中有关通知的内容,就会发现,System UI 对通知的显示和通知的清除,同样也是继承该API.。当通知被清除时,会调用 onNotificationRemoved(StatusBarNotification sbn) 方法,其中的参数 sbn 代表被删除的通知.可以在该方法里做一些删除后的工作.由于源码中有@hide,表明该方法不对第三方应用开放,所以如果是系统内置的应用,则可以使用.
2024-01-31 10:32:36 1035
原创 Android 12.0 监听手机飞行模式
2. 接着通过监听飞行模式提供的广播来实时监听飞行模式状态 : Intent.ACTION_AIRPLANE_MODE_CHANGED。3. 在飞行模式状态变化时,会触发广播,接着在广播里作处理即可.1. 判断当前手机飞行模式是否开启。
2024-01-30 16:11:50 689
原创 Android 12.0 通知--PendingIntent源码分析
核心路径: frameworks/base/services/core/java/com/android/server/am/PendingIntentController.java/*** 该类主要的职责就是协助 ActivityManagerService 管理所有的 PendingIntent*//** 保存所有可用的IntentSenderRecord 对象. */......= null) {i++) {
2024-01-12 13:54:36 1484
原创 Android通知---创建通知(附加代码)
使用 NotificationCompat.Builder 对象设置通知的内容和渠道。以下示例展示了如何创建包含以下内容的通知:小图标,通过 setSmallIcon() 设置。这是所必需的唯一用户可见内容。标题,通过 setContentTitle() 设置。正文文本,通过 setContentText() 设置。通知优先级,通过 setPriority() 设置。优先级决定了通知在 Android 7.1 及更低版本上的干扰程度。
2024-01-10 18:19:11 1773
原创 Android 13.0 修改Android系统的通知自动成组的数量
场景: Android 系统对显示在通知列表中的同一个应用的通知进行分组管理,即相同的packageName中,当通知数量达到系统默认指定的数量时,会自动成一组.参考: 相对比于Android 12.0 和 Android 11.0 指定的默认自动成组数为 4 , 在 Android 13.0 中该值为 2 .如果想修改系统默认的自动分组数,则修改属性为 config_autoGroupAtCount 后的值即可.
2023-11-30 17:15:49 814
原创 Android 11.0 修改Android系统的通知自动成组的数量
场景: Android 系统对显示在通知列表中的同一个应用的通知进行分组管理,即相同的packageName中,当通知数量达到系统默认指定的数量时,会自动成一组.如果想修改系统默认的自动分组数,则修改属性为 config_autoGroupAtCount 后的值即可.
2023-11-30 17:11:58 728
原创 Android 12.0 修改Android系统的通知自动成组的数量
场景: Android 系统对显示在通知列表中的同一个应用的通知进行分组管理,即相同的packageName中,当通知数量达到系统默认指定的数量时,会自动成一组.如果想修改系统默认的自动分组数,则修改属性为 config_autoGroupAtCount 后的值即可.
2023-11-30 17:08:50 680
原创 Android 12.0 中 清除通知 , 系统源码分析(二)
(2) 源码路径: frameworks/base/services/core/java/com/android/server/notification/NotificationManagerService.java。特别提示:notificationManager.cancelAll() 是删除由该APP发出的所有通知,即 "App的包名"对应下的所有通知.(1)源码路径: frameworks/base/core/java/android/app/NotificationManager.java。
2023-11-14 18:36:28 593
原创 Android 12.0 中 清除通知 , 系统源码分析(一)
(3) 源码路径: frameworks/base/services/core/java/com/android/server/notification/NotificationManagerService.java。(7) 正常情况下,都能找到需要删除的通知,并顺利清除,通知清除后,还需要做一些通知资源的后续工作,继续分析 cancelNotificationLocked()(6)查看通知是如何删除的, 继续分析 removeFromNotificationListsLocked()
2023-11-14 17:40:25 1134
原创 Android 13 定制化开发--开启相机或麦克风时,去掉状态栏上的绿色图标
12 或更高版本的设备上,当应用使用麦克风或相机时,图标会出现在状态栏中。如果应用处于沉浸模式,图标会出现在屏幕的右上角。用户可以打开“快捷设置”,并选择图标以查看哪些应用当前正在使用麦克风或摄像头。图 1 显示了包含图标的示例屏幕截图。核心代码路径: frameworks/base/packages/SystemUI/src/com/android/systemui/privacy/PrivacyConfig.kt。需求: 去掉状态栏上的 相机 绿色图标.
2023-09-21 17:55:23 1158 2
原创 Caused by:java.lang.IllegalArgumentException: provider “network“ does not exist
(3)上面源码上可以看到,当LocationProvider 为 null 时,系统会抛出异常,这就是日志中看到的异常,因此,可以在 locationProvider 不为为 null 的时,才执行后面的步骤,在LocationManager.java中,提供了一个 isProviderEnabled()方法去判断provider是否可用.源码路径:frameworks/base/location/java/android/location/LocationManager.java。
2023-09-21 17:46:27 506
原创 Caused by:java.lang.IllegalArgumentException: provider “network“ does not exist
(3)上面源码上可以看到,当LocationProvider 为 null 时,系统会抛出异常,这就是日志中看到的异常,因此,可以在 locationProvider 不为为 null 的时,才执行后面的步骤,在LocationManager.java中,提供了一个 isProviderEnabled()方法去判断provider是否可用.源码路径:frameworks/base/location/java/android/location/LocationManager.java。
2023-09-21 16:27:49 354
原创 Caused by:java.lang.IllegalArgumentException: provider “network“ does not exist
(4)上面源码上可以看到,当LocationProvider 为 null 时,系统会抛出异常,这就是日志中看到的异常,因此,可以在 locationProvider 不为为 null 的时,才执行后面的步骤,在LocationManager.java中,提供了一个 isProviderEnabled()方法去判断provider是否可用.源码路径:frameworks/base/location/java/android/location/LocationManager.java。
2023-09-21 15:31:03 1200
原创 Android 12 定制化开发--开启相机或麦克风时,去掉状态栏上的绿色图标
Android 12 或更高版本的设备上,当应用使用麦克风或相机时,图标会出现在状态栏中。如果应用处于沉浸模式,图标会出现在屏幕的右上角。用户可以打开“快捷设置”,并选择图标以查看哪些应用当前正在使。核心代码路径: frameworks/base/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt。图 2 显示了包含图标的示例屏幕截图。需求: 去掉状态栏上的 相机 绿色图标.
2023-08-11 16:42:37 1293 2
原创 Java 对象的赋值和new出对象再赋值的问题
接着把map.get(1)的对象的引用赋给 studentTwo ,即此时 studentTwo 指向map.get(1)的对象的内存,暂且命名为内存2.场景1:首先 new 出一个 Student 对象, 这时会在内存开辟一块新的内存,暂且命名为内存1,这时,studentTwo保存内存1的地址;这时,内存1因为没有被对象引用,成为垃圾,等待JVM的回收.也就是内存1是多余的,并没有被使用.以上场景的代码逻辑上没有错误,就是性能上不同,所以下面的分析是从性能考虑上分析,让代码更高效.
2023-07-18 13:38:29 885
原创 Android XmlPullParser解析xml(2)
(1)在main路径下,创建assets目录,存放待解析的xml文件.如:/app/src/main/assets/app_list.xml。(2)创建对象,存放解析出来的信息.
2023-07-17 18:23:04 158
原创 android XmlPullParser解析xml(1)
(1)首先在创建/src/main/ 目录下创建Directory,名为assets , 接着在assets目录中,创建Values XML File 文件, 存放xml文件的内容,如:persons.xml。(2) 在Activity中创建Person对象,存放xml解析出来的数据.(3)开始解析xml里的内容.
2023-07-17 17:38:35 246
原创 Android 11.0 Launcher3 Folder 去掉背景
/设置背景的颜色 和 透明度。就是定义了背景填充的颜色和透明度,这里的透明度是255,透明度越大,就越不透明,即 0 为透明;255为完全不透明,所以,可以通过修改透明度来去掉背景即可.(1)需求:Android 11.0 桌面系统默认的文件夹,打开文件夹后,文件夹会有一个白色模糊的背景色,显得不好看,需要把这背景色去掉.即把透明度修改为 0, 把背景设置为透明即可.
2023-05-11 16:09:12 392
原创 Android 11.0 介绍快捷面板快捷图标个数
需求: Android 系统默认快捷面板中,显示10个默认的快捷图标,现在需要减少为8个,即隐藏 手电筒和勿扰模式的快捷图标.这是Android系统默认在快捷面板显示的快捷图标,并且是按顺序显示的,
2023-05-05 17:19:51 227
原创 Android 11.0 源码中判断 USB 是否在使用中
需求: Android 11.0 定制开发中,需要对 手机 USB 在使用时,需要添加一些业务代码.
2023-04-28 17:48:51 184
原创 Android 11.0 系统源码中,判断是否设置了锁屏密码
需求:Android 系统在锁屏页面可以设置锁屏密码,或者不设置密码,现在需要通过代码方式获取当前用户是否设置了锁屏密码.
2023-04-28 17:09:58 522
原创 Android12.0 源码中添加系统String字符串
为了资源使用的灵活性,需要对提示框口中的提示语定义到资源文件中,之后就可以在ActivityTaskManagerService.java直接引用.在源码中,需要引用自定义的字符串,如:在frameworks目录中,为了引用自定义字符串资源,需要自定义字符串提前添加到系统中,否则无法引用,提醒:一定在该配置文件中定义英文模式字符串,否则编译的时候会提示收不到资源。(2) 之后,需要在strings.xml中,定义具体属性值.(1)系统中的资源,需要在symbols.xml中定义.
2023-04-25 11:46:50 547
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人