add_service('YourService',0x78) uid=1001 - PERMISSION DENIED
擋的地方是
int do_add_service(struct binder_state *bs,
uint16_t *s, unsigned len,
void *ptr, unsigned uid)
{
struct svcinfo *si;
// LOGI("add_service('%s',%p) uid=%d\n", str8(s), ptr, uid);
if (!ptr || (len == 0) || (len > 127))
return -1;
if (!svc_can_register(uid, s)) {
LOGE("add_service('%s',%p) uid=%d - PERMISSION DENIED\n",
str8(s), ptr, uid);
return -1;
}
我的解法:
在service_manage.c中的新增一欄位
static struct {
unsigned uid;
const char *name;
} allowed[] = {
#ifdef LVMX
{ AID_MEDIA, "com.lifevibes.mx.ipc" },
#endif
{ AID_MEDIA, "media.audio_flinger" },
{ AID_MEDIA, "media.player" },
{ AID_RADIO, "YourService" },
這樣的話在svc_can_register()中的檢查就可以過了
詳細情形可參閱
http://www.jollen.org/blog/2010/02/android-uid-system.html
沒有留言:
張貼留言