关于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();
}


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


猜你喜欢

转载自blog.csdn.net/ieiqny1/article/details/78743370
今日推荐