进程间通信 binder机制-添加自己的系统服务

1. 系统级Service (ServiceManager管理的系统服务) 的方法想让app访问

  1. /h2a_0529$  cd frameworks/base/core/java/android/os
  2. h2a_0529/frameworks/base/core/java/android/os$ vim IHelloService.aidl
  3. package android.os;
    
    interface IHelloService {
        void setVal(int val);
        int getVal();
    }
    

  4. 返回到frameworks/base目录,打开Android.mk文件,修改LOCAL_SRC_FILES变量的值,增加
    core/java/android/os/IHelloService.aidl /
  5. h2a_0529$ mmm frameworks/base/  编译2中的aidl生成stub 和 proxy
  6. 进入到frameworks/base/services/java/com/android/server目录,新增HelloService.java       
package  com.android.server;
import android.content.Context;
import android.os.IHelloService;
import android.util.Log;
public class HelloService extends IHelloService.Stub{

 public void setVal(int val){
      Log.d("yzy","setVal......"+val);
 }
 public int getVal(){
      return 0;
 }
}
      7. 修改同目录的SystemServer.java文件,在ServerThread::run函数中增加加载HelloService的代码
ServiceManager.addService("hello", new HelloService());

8. 调用 
IHelloService  hs= IHelloService.Stub.asInterface(ServiceManager.getService("hello"));   
hs.setVal(123);


你可能感兴趣的:(进程间通信 binder机制-添加自己的系统服务)