在开启了seandroid的设备中,app想调用底层驱动和接口光靠 签名+"android:sharedUserId="android.uid.system""是不行的,调用会不成功。
查看kernel log时会发现类似如下提示:
avc: denied { call } for pid=229 comm="chargerhd" scontext=u:r:chargerhd:s0 tcontext=u:r:system_app:s0 tclass=binder permissive=0
这时就需要去对应的*.te文件中添加权限,格式如下:
allow scontext tcontext:tclass { xxx }
(scontext对应的是哪一个xxx.te,tcontext对应的是哪一个服务, tclass对应的哪一个类, {}内对应的是权限)
例子:allow chargerhd system_app:binder {call transfer};
上述的avc:denied错误就用上述方式解除。