ServiceManager允许添加PhoneService中的服务

32 阅读1分钟

1.定义好服务名

String PBAP_SERVICE_NAME = "phone_pbap_svc";
String HFP_SERVICE_NAME = "phone_hfp_svc";
  1. XXX是aidl实现
ServiceManager.addService(HFP_SERVICE_NAME, XXX);
ServiceManager.addService(PBAP_SERVICE_NAME, XXX);

如果没有权限,addService后抛出异常处理方式如下

1.文件:lagvm/lagvm/LINUX/android/device/qcom/sepolicy/generic/private/service_contexts

未尾添加

phone_hfp_svc u:object_r:phone_hfp_service:s0
phone_pbap_svc u:object_r:phone_pbap_service:s0

蓝色phone_hfp_svc和phone_pbap_svc就是代码中定义好的service name

红色phone_hfp_service和phone_pbap_service可自定义,需与前面的phone_hfp_svc和phone_pbap_svc不同 

 

2.文件:lagvm/lagvm/LINUX/android/device/qcom/sepolicy/generic/private/platform_app.te

未尾添加

allow platform_app phone_hfp_service:service_manager { add find };
allow platform_app phone_pbap_service:service_manager { add find };

3.文件:lagvm/lagvm/LINUX/android/device/qcom/sepolicy/generic/private/priv_app.te

未尾添加

allow priv_app phone_hfp_service:service_manager { add find };
allow priv_app phone_pbap_service:service_manager { add find };

4.文件:lagvm/lagvm/LINUX/android/device/qcom/sepolicy/generic/private/system_app.te

未尾添加

allow system_app phone_hfp_service:service_manager { add find };
allow system_app phone_pbap_service:service_manager { add find };

5.文件:lagvm/lagvm/LINUX/android/device/qcom/sepolicy/generic/private/system_service.te

未尾添加

allow system_server phone_hfp_service:service_manager { add find };
allow system_server phone_pbap_service:service_manager { add find };

6.文件:lagvm/lagvm/LINUX/android/device/qcom/sepolicy/generic/public/service.te

未尾添加

type phone_hfp_service, app_api_service, system_api_service, service_manager_type;
type phone_pbap_service, app_api_service, system_api_service, service_manager_type;

 

编译方法:

make selinux_policy

adb push out/target/product/msmnile_gvmq/system/etc/selinux /system/etc

adb push out/target/product/msmnile_gvmq/system/system_ext/etc/selinux /system/system_ext/etc

adb push out/target/product/msmnile_gvmq/vendor/etc/selinux /vendor/etc

adb push out/target/product/msmnile_gvmq/product/etc/selinux /product/etc(这一条out/target/product/msmnile_gvmq/product/etc/selinux目录可能不存在)

成为第一个赞同者