我在Framework层的SystemServer中添加了一个系统服务。
interface IAService {
void valueChange(int value)
}
public class XXXService extends IAService.Stub {
}
我希望只能通过其他系统服务调用此服务。
IAService service = IAService.Stub.asInterface(ServiceManager.getService("A"));
serivce.valueChange("0");
但是,如果有人使用ServiceManager作为反射方式获得此服务实例。
他们可以尝试IPC。
我们可以只允许其他系统服务吗?
谢谢:)
答案 0 :(得分:1)
我不认为有人通过反思使用各种隐藏服务。您最好的办法是使用系统级权限来保护它,以便没有该权限的任何人在尝试调用您的方法时会抛出异常。