У меня есть системный сервис KioskService.Внутри этой системной службы я называю другую системную службу DpcService так:
public class KioskService extends IKioskService.Stub{
private Context mContext;
private IDpcService dpcService;
public KioskService(Context context) {
mContext = context;
}
@Override
public void exitKiosk() {
try{
String[] emptyArray = {""};
dpcService = IDpcService.Stub.asInterface(getBinder("dpc"));
dpcService.setLockTaskPackages(emptyArray);
}
catch(Exception e){
Log.e("TAG","Exit Kiosk Exception",e);
}
}
private IBinder getBinder(String serviceName) {
IBinder serviceBinder;
serviceBinder = ServiceManager.getService(serviceName);
if (serviceBinder == null) {
return null;
}
return serviceBinder;
}
}
Однако я получаю эту ошибку:
05-06 06: 40: 00.088 604 604 E SELinux:avc: отказано {найти} для службы = msi_dpc pid = 5375 uid = 1000 scontext = u: r: kiosk_app: s0 tcontext = u: object_r: dpc_service: s0 tclass = service_manager permissive = 0
Iдумаю, причина в том, что, используя политику Selinux, я должен разрешить моей службе киоска использовать мою службу dpc.Если это так, как мне это сделать?