关于android 7.0系统怎么添加自定义的系统服务

1  \frameworks\base\core\java\android\content\Context.java

添加一个服务名称

eg:   

      public static final String TEST_SERVICE = "testservice";

 

2 \frameworks\base\services\java\com\android\server\SystemServer.java

    private void startOtherServices() {

函数中添加服务

eg:

            /// M: add for running booster feature @{
            if ("1".equals(SystemProperties.get("persist.runningbooster.support"))) {
                try {
                    SuppressionService mSuppressionService =
                            mSystemServiceManager.startService(SuppressionService.class);
                    mSuppressionService.setActivityManager(mActivityManagerService);


                    Slog.i(TAG, "RunningBoosterService");
                    runningbooster = new RunningBoosterService(context);
                    ServiceManager.addService(Context.RUNNING_BOOSTER_SERVICE,
                            runningbooster.asBinder());
                } catch (Throwable e) {
                    reportWtf("starting RunningBoosterService", e);
                }
            }
            /// add for running booster feature @}
 
+++   ServiceManager.addService(Context.TEST_SERVICE, new TestManagerService(context));

 

3  \frameworks\base\core\java\android\app\SystemServiceRegistry.java

注册服务

    private SystemServiceRegistry() { }

       static {

  添加

        /// M: add for running booster feature @{
        if ("1".equals(SystemProperties.get("persist.runningbooster.support"))) {
            registerService(Context.RUNNING_BOOSTER_SERVICE, RunningBoosterManager.class,
                    new CachedServiceFetcher<RunningBoosterManager>() {
            @Override
            public RunningBoosterManager createService(ContextImpl ctx) {
                return new RunningBoosterManager(ctx);
            }});
        }
        /// add for running booster feature @}

// <- ----- -Xiao------2017/09/20------add service-----
   registerService(Context.TEST_SERVICE, TestManager.class,
                new CachedServiceFetcher<TestManager>() {
                    @Override
                    public TestManager createService(ContextImpl ctx) {
                        IBinder b = ServiceManager.getService(Context.TEST_SERVICE);
                        ITestManager service = ITestManager.Stub.asInterface(b);
                        return new TestManager(ctx,service);
                }});

4 system\sepolicy\service.te

添加

type window_service, system_api_service, system_server_service, service_manager_type;
+++  type test_service, system_api_service, system_server_service, service_manager_type;


5  system\sepolicy\service_contexts
添加

window                                    u:object_r:window_service:s0
+++  testservice                               u:object_r:dami_service:s0

 

添加aidl

添加
\frameworks\base\core\java\android\test\ITestManager.aidl
\frameworks\base\core\java\android\test\TestManager.java

 

ITestManager.aidl写法

package android.test;

interface ITestManager {

    void myTest();

}

 

TestManager.java写法

添加
package android.dami;

public class TestManager{
    ITestManager mTestManagerSevice;

    public TestManager(Context ctx,ITestManager testManagerSevice) {
        mTestManagerSevice = testManagerSevice;
    }


    public void myTest() throws RemoteException {
 mTestManagerSevice.myTest();
    }
}

添加 frameworks\base\services\core\java\com\android\server\test\TestManagerService.java

package com.android.server;



import android.app.test.ITestManager ;
import android.content.Context;
import android.os.Build;
import android.util.Log;

public class TestManagerService extends ITestManager .Stub {
    private Context mContext;


    public SystemStatusManagerService(Context context) {
        mContext = context;
    }


    @Override
    public void myTest() {

 Log.d("myTest","This is test !");
    }


}

 

代码基本添加完成。

 

下面是编译

  先是update-api  然后再make -j8

 

下载   ok

 

至于调用

TestManager mManager = (TestManager) getSystemService(Context.TEST_SERVICE );
try {
    mManager.myTest();
} catch (Exception e) {
    e.printStackTrace();
}

 

以上工作就是怎么添加系统服务。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值