当前位置: 首页 > news >正文

Android 13 Framework 添加自定义的系统服务CustomService

目的: 添加自定义的系统服务,在自定义的服务中开发定制的API接口和功能,独立于系统核心服务,方便开发和维护。

开发环境:Android 13 MTK平台

涉及修改的文件如下

device/mediatek/sepolicy/base/private/service_contexts
device/mediatek/sepolicy/base/vendor/platform_app.te
device/mediatek/sepolicy/base/vendor/priv_app.te
device/mediatek/sepolicy/base/vendor/service_contexts
device/mediatek/sepolicy/base/vendor/system_app.te
device/mediatek/sepolicy/base/vendor/untrusted_app.te
device/mediatek/sepolicy/base/vendor/untrusted_app_27.te
frameworks/base/Android.bp
frameworks/base/core/api/current.txt
frameworks/base/core/java/android/app/SystemServiceRegistry.java
frameworks/base/core/java/android/content/Context.java
frameworks/base/services/java/com/android/server/SystemServer.java
system/sepolicy/prebuilts/api/33.0/private/service_contexts
system/sepolicy/private/service_contexts
system/sepolicy/private/untrusted_app_30.te
system/sepolicy/public/service.te
frameworks/base/core/java/android/app/CustomServiceManager.java
frameworks/base/core/java/android/os/custom/ICustomService.aidl
frameworks/base/services/core/java/com/android/server/CustomService.java

功能实现:

1.添加自定义服务AIDL文件:ICustomService.aidl,定义接口

路径:frameworks/base/core/java/android/os/custom/ICustomService.aidl

package android.os.custom;interface ICustomService {String getTestTime();
}

2.添加自定义服务管理类:CustomServiceManager.java,Context.CUSTOM_SERVICE 是新增服务的标识,见下面的 Context.java的修改。

路径:frameworks/base/core/java/android/app/CustomServiceManager.java

package android.app;import android.content.Context;
import android.os.custom.ICustomService;
import android.annotation.SystemService;
import android.util.Log;@SystemService(Context.CUSTOM_SERVICE)
public class CustomServiceManager {private static final String TAG = "CustomServiceManager";ICustomService mService;public CustomServiceManager(Context context,ICustomService service){mService=service;}public String getTestTime(){try{return mService.getTestTime();}catch(Exception e){Log.d(TAG,"getTestTime e.getMessage()="+e.getMessage());return "";}}
}

3.添加自定义服务实现类:CustomService.java,实现具体的功能。

路径:frameworks/base/services/core/java/com/android/server/CustomService.java

package com.android.server;import java.lang.*;
import java.util.Date;
import java.util.Locale;import android.icu.text.SimpleDateFormat;
import android.os.RemoteException;
import android.os.custom.ICustomService;
import android.content.Context;
import android.util.Log;public class CustomService extends ICustomService.Stub {private static final String TAG="CustomService";private final Context mContext;public CustomService

相关文章:

Android 13 Framework 添加自定义的系统服务CustomService

目的: 添加自定义的系统服务,在自定义的服务中开发定制的API接口和功能,独立于系统核心服务,方便开发和维护。 开发环境:Android 13 MTK平台 涉及修改的文件如下 device/mediatek/sepolicy/base/private/service_contexts device/mediatek/sepolicy/base/vendor/platfo…...

前端食堂技术周刊第 95 期:Fresh 1.4、Rollup 迁移至 SWC计划、RSC Devtools、使用开源库的边界、AI 帮你讲论文

美味值:🌟🌟🌟🌟🌟 口味:冰葡美式 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下…...

【TypeScript】枚举类型

在 TypeScript 中,枚举(Enum)是一种用于定义命名常量集合的数据类型。枚举使代码更加可读和可维护,因为它们为一组具有语义的值提供了命名。 以下是 TypeScript 中枚举的基本用法和特点: // 声明一个枚举 enum Direc…...

快速通过华为HCIP认证

你可以按照以下步骤进行准备和学习: 华为认证课程和资料--提取码:1234https://pan.baidu.com/s/1YJhD8QbocHhZ30MvrKm8hg 了解认证要求:查看华为官方网站上的HCIP认证要求和考试大纲,了解考试的内容、考试形式和考试要求。 学习相关知识&am…...

派森 #P124. 公式计算

描述 输入数正整数m,输出0! 1! ...m!的计算结果。 样例 输入 5 输出 154 代码: m int(input()) result 1 factorial 1 for i in range(1, m 1):factorial * iresult factorial print(result) # 法2def factorial(n):"""计…...

opencv进阶14-Harris角点检测-cv2.cornerHarris

类似于人的眼睛和大脑,OpenCV可以检测图像的主要特征并将这 些特征提取到所谓的图像描述符中。然后,可以将这些特征作为数据 库,支持基于图像的搜索。此外,我们可以使用关键点将图像拼接起 来,组成更大的图像。&#x…...

JVM中对象和GC Root之间的四种引用关系

1. 强引用 只有所有 GC Roots 对象都不通过【强引用】引用该对象&#xff0c;该对象才能被垃圾回收 由GC Root直接new出来的对象是强引用&#xff0c;只有当GC Root不再引用该对象的时候&#xff0c;才会被回收 例子&#xff1a; List<String> list new ArrayList<&…...

【李宏毅机器学习】注意力机制

输出 我们会遇到不同的任务&#xff0c;针对输出的不一样&#xff0c;我们对任务进行划分 给多少输出多少 给一堆向量&#xff0c;输出一个label&#xff0c;比如说情感分析 还有一种任务是由机器决定的要输出多少个label&#xff0c;seq2seq的任务就是这种&#xff0c;翻译也…...

Nginx使用keepalived配置VIP

VIP常用于负载均衡的高可用&#xff0c;使用VIP可以给多个主机绑定一个IP&#xff0c;这样&#xff0c;当某个负载应用挂了之后&#xff0c;可以自动切到另一个负载。 我这里是在k8s环境中做的测试&#xff0c;集群中有6个节点&#xff0c;我给140和141两个节点配置VIP。 1. 安…...

C语言编写图形界面

文章目录 环境使用库基础概念句柄 程序的入口创建窗口定义窗口类注册窗口类创建窗口 完整代码运行效果 环境 使用的是VSCode MinGW&#xff1b; 使用库 我们使用windows.h库来实现图形化界面。 头文件如下&#xff1a; #include <windows.h>windows.h是 Windows 操作…...

K8s学习笔记3

Kubernetes功能&#xff1a; Kubernetes是一个轻便的可扩展的开源平台&#xff0c;用于管理容器化应用和服务。通过Kubernetes能够进行应用的自动化部署和扩缩容。在Kubernetes中&#xff0c;会将组成应用的容器组合成一个逻辑单元以更易管理和发现。Kubernetes积累了作为Goog…...

ceph集群的扩容缩容

文章目录 集群扩容添加osd使用ceph-deploy工具手动添加 添加节点新节点前期准备新节点安装ceph&#xff0c;出现版本冲突 ceph-deploy增加节点 集群缩容删除osd删除节点 添加monitor节点删除monitor节点使用ceph-deploy卸载集群 实验所用虚拟机均为Centos 7.6系统&#xff0c;8…...

gremlin安装使用 详细步骤

gremlin是一个图数据库查询工具&#xff0c;注意他只是一个工具类似于dbeaver&#xff0c;navicat&#xff0c;sqlyog&#xff0c;是专门来分析图数据库的一个工具。 下载 下载地址Apache Download Mirrors 省事的可以直接 wget https://www.apache.org/dyn/closer.lua/tin…...

Java语言怎么编写一个程序计算出租车的运输费用:出租车起步15公里以内20块钱,需要支付调头费用

下面是一个Java语言编写的计算出租车运输费用的程序&#xff1a; java import java.util.Scanner; public class TaxiFareCalculator { public static void main(String[] args) { Scanner input new Scanner(System.in); System.out.print("请输入出租车行驶的里程&…...

十、flume的安装

1.解压 2.改名 3.修改权限 4.编辑环境变量并source export FLUME_HOME/usr/local/flume export PATH$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HBASE_HOME/bin:$SQOOP_HOME/bin:$PIG_HOME/bin:$FLUME_HOME/bin 5.配置 6.查看版本 7.启动Hadoo…...

互联网广告及产品变现认知分析整理

深入学习互联网广告及产品&#xff0c;并且高效利用这一模式进行变现。 字节先是建立了一个非常强大的用户产品——抖音&#xff0c;通过各种渠道让抖音快速成长起来&#xff0c;收获了一大批初始用户。有了用户基础之后&#xff0c;字节开始打造它的广告产品&#xff0c;逐渐…...

item_search_img-按图搜索淘宝商品(拍立淘)

一、接口参数说明&#xff1a; item_search_img-按图搜索淘宝商品&#xff08;拍立淘&#xff09;&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_search_img 名称类型必须描…...

OWASP Top 10(2021)漏洞学习(最新)

A01:2021-权限控制失效 从第五位上升到第一位&#xff0c;94%的应用程序都接受了某种形式的针对“失效的访问控制”的测试&#xff0c;该事件的 平均发生率为 3.81%&#xff0c;该漏洞在提供的数据集中出现漏洞的应用数量最多&#xff0c;总发生漏洞应用数量超过31.8万多 次。 …...

mysql 、sql server 游标 cursor

游标 声明的位置 游标必须在声明处理程序之前被声明&#xff0c;并且变量和条件还必须在声明游标或处理程序之前被声明 游标的使用步骤 声明游标打开游标使用游标关闭游标 &#xff08;sql server 关闭游标和释放游标&#xff09; sql server 游标 declare my_cursor curs…...

dockers搭建基本服务

1、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。 拉取mysql-5.6和owncloud的镜像 docker run -d --name mdb --env MYSQL_ROOT_PASSWORD123 cytopia/mysql-5.6 docker run -d -p 90:80 --name webdcloud --link mdb:mdb owncloud 注册的时候&#xff0c;数据…...

Qwen3-VL-8B开源AI聊天系统效果展示:多语言混合输入理解能力

Qwen3-VL-8B开源AI聊天系统效果展示&#xff1a;多语言混合输入理解能力 1. 系统概览与核心能力 Qwen3-VL-8B是一个基于通义千问大语言模型的Web聊天应用&#xff0c;提供了简洁美观的PC端聊天界面。这个完整的AI聊天系统包含前端界面、反向代理服务器和vLLM推理后端&#xf…...

EVA-01开发者案例:Qwen2.5-VL-7B集成至MAGI类AI平台实现多源视觉融合

EVA-01开发者案例&#xff1a;Qwen2.5-VL-7B集成至MAGI类AI平台实现多源视觉融合 1. 引言&#xff1a;当视觉AI遇见机甲美学 想象一下&#xff0c;你正在处理一份复杂的市场分析报告&#xff0c;里面混杂着数据图表、产品照片和手写笔记。传统的AI工具要么只能看文字&#xf…...

YALMIP求解器报错看不懂?从verbose到debug,教你快速定位并解决优化问题

YALMIP求解器报错看不懂&#xff1f;从verbose到debug&#xff0c;教你快速定位并解决优化问题 当你满怀期待地运行YALMIP优化代码&#xff0c;却看到命令行突然跳出一片红色报错信息时&#xff0c;那种挫败感每个优化工程师都深有体会。"No feasible solution found"…...

手把手教你部署DeepSeek-R1:纯CPU环境搭建逻辑推理AI全攻略

手把手教你部署DeepSeek-R1&#xff1a;纯CPU环境搭建逻辑推理AI全攻略 1. 从零开始&#xff1a;为什么你需要一个本地推理引擎 想象一下这个场景&#xff1a;你正在处理一份包含敏感数据的文档&#xff0c;需要AI帮你分析逻辑关系&#xff0c;但公司规定数据不能上传到云端。…...

单片机串口通信原理与应用详解

单片机串口通信技术详解1. 串口通信基础概念1.1 串行通信原理串行通信是一种仅使用一根接收线(RX)和一根发送线(TX)进行数据传输的通信方式。与并行通信相比&#xff0c;虽然传输速度较慢&#xff0c;但具有布线简单、成本低的优势。典型的串口通信系统包含三根基本信号线&…...

深度学习计算机视觉:从原理到实践

深度学习计算机视觉&#xff1a;从原理到实践 1. 背景与动机 计算机视觉是深度学习最成功的应用领域之一。从图像分类到目标检测&#xff0c;从语义分割到图像生成&#xff0c;深度学习技术已广泛应用于自动驾驶、医疗影像、工业检测等领域。本文将介绍计算机视觉的核心技术和实…...

时光守护者:一键备份QQ空间历史说说的终极解决方案

时光守护者&#xff1a;一键备份QQ空间历史说说的终极解决方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字时代&#xff0c;我们的记忆被分散在各个社交平台&#xff0c;QQ空…...

户用光伏爆火却被内耗拖垮?

当下户用光伏赛道卷疯了&#xff0c;订单接到手软&#xff0c;但不少光伏公司却陷入“越忙越乱”的内耗困境。从客户咨询、签单、设计安装&#xff0c;到并网运维&#xff0c;全流程环节繁杂、信息密集&#xff0c;亟需多部门高效协同&#xff0c;可很多企业还在靠人工记录、纸…...

零基础入门:收藏必备!从Agent概念到实战构建,小白也能掌握AI新趋势

本文系统梳理了AI Agent的核心概念、原理及构建模式&#xff0c;通过对比ReAct和Plan-and-Execute等主流模式&#xff0c;阐述了Agent如何从被动对话转向主动行动。文章详细介绍了构建Agent的思路和关键组件&#xff0c;如主程序、行为说明书和工具集&#xff0c;适合对AI Agen…...

STM32嵌入式系统分层架构与设备驱动实现

嵌入式系统中应用层与硬件层的分层管理实现1. 项目概述在嵌入式系统开发中&#xff0c;传统的开发方式往往将硬件操作直接嵌入到应用层代码中&#xff0c;导致代码耦合度高、可维护性差。本文介绍一种基于STM32平台的硬件抽象层实现方案&#xff0c;通过设备驱动模型实现应用层…...