android 8.1 新增自定义系统服务

本文详细介绍了如何在Android系统中新增一个自定义服务,并在SystemUI中调用该服务。首先,创建aidl文件和管理类,接着实现服务并注册到系统服务管理器。然后修改Android.mk文件、配置文件和服务权限。在SystemUI中调用服务,并指导如何将服务打包到SDK中。最后,展示了生成jar包的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新增一个自定义的系统服务,并尝试在SystemUI中调用自定义service

一、新建相关文件以及定义服务的注册与启动

        1.新建aidl文件

         到android8.1/frameworks/base/core/java/android 目录下,可以看到app文件夹,目录下是aidl服务接口文件和对应的服务管理类。 可以将自定义的aidl文件放在这个目录里。

         本文在android8.1/frameworks/base/core/java/android目录下新建了chenzqTest文件夹,方便管理自定义内容。

        android8.1/frameworks/base/core/java/android/chenzqTest 目录下 新增ITestService.aidl文件。

package android.chenzqTest;

interface ITestService {
    void log();  //因为只是个测试,所以就写一个无参的log方法
}

     

         2. 同目录下新建管理类 TestManager.java

package android.chenzqTest;

import android.os.RemoteException;
import android.content.Context;
import android.os.ServiceManager;
import android.util.Log;

public class TestManager {
    private ITestService mService;

    public TestManager(Context ctx ){
    mService =ITestService.Stub.asInterface(ServiceManager.getService("test-service"));//获取ITestService实例
    }

    public void log ()throws RemoteException{
        mService.log();
    }
}

记得抛异常

注意这个包名“android.chenzqTest

        3.新建aidl实现类

        一般把实现类放在android8.1/frameworks/base/core/java/com/android/server 目录下

        在android8.1/frameworks/base/core/java/com/目录下 新建chenzqTest/server目录

         android8.1/frameworks/base/core/java/com/chenzqTest/server目录下,新建TestServiceImpl.java继承ITestService.Stub

package com.chenzqTest.server;
import android.os.RemoteException;
import android.util.Log;
import android.chenzqTest.ITestService;

public class TestServiceImpl extends ITestService.Stub {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值