make getSystemService()识别我们的新系统服务

时间:2013-06-18 03:09:09

标签: android android-service android-source android-build

我正在使用“嵌入式Android”一书。

我正在使用AOSP(4.0.3_r1)制作新的系统服务 我希望我的系统服务在 frameworks / base / core / java / android / content / app / ContextImpl.java 中注册,以便我可以通过getSystemService()方法使用它。

问题是,我在 内容 下找不到 app 文件夹:
androidroot /框架/碱/核心/ JAVA /机器人/ 内容/应用 /ContextImpl.java
但是,我发现它:
androidroot / frameworks / base / core / java / android / app / ContextImpl.java

这两个文件是否相同?或者只是缺少(内容/ app 文件夹)?
有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您需要使用包含所有系统服务名称的SystemServer。 你应该检查这个链接: http://processors.wiki.ti.com/index.php/Android-Adding_SystemService

答案 1 :(得分:0)

卡里姆写的主要是针对Android 2.3.4版本。从这个时候可以改变一些东西。这是一个已经改变的例子。

  

这两个文件是否相同?还是只是缺少(内容/应用程序文件夹)?

这些是相同的文件。

  

知道该怎么做?

正如我所说,实施已经改变。我查看了代码,在这里你可以改变什么来使代码工作(我只能假设因为我实际上没有构建我的代码)。在ContextImpl类的static块中,您需要添加以下代码:

registerService(ACCOUNT_SERVICE, new ServiceFetcher() {
    public Object createService(ContextImpl ctx) {
        IBinder b = ServiceManager.getService(OPERSYS_SERVICE);
        IOpersysService service = IOpersysService.Stub.asInterface(b);
        return new OpersysManager(service);
    }});