如何从Python代码中直接访问Android的Service(二)

2014-11-23 21:40:03 · 作者: · 浏览: 49


{


return 0;


}


return p->writeInterfaceToken(String16(interface));


}



int parcel_writeInt32(void *parcel,int val)


{


Parcel *p = reinterpret_cast(parcel);



if(p == 0)


{


return 0;


}



return p->writeInt32(val);


}



int parcel_writeCString(void *parcel,const char* str)


{


Parcel *p = reinterpret_cast(parcel);



if(p == 0)


{


return 0;


}


return p->writeCString(str);


}



int parcel_writeString16(void *parcel,const char16_t* str, size_t len)


{


Parcel *p = reinterpret_cast(parcel);



if(p == 0)


{


return 0;


}



if (str == 0 || len <= 0)


{


return 0;


}



return p->writeString16(str,len);


}




int parcel_readInt32(void *parcel)


{


Parcel *p = reinterpret_cast(parcel);



if(p == 0)


{


return 0;


}


return p->readInt32();


}



long parcel_readInt64(void *parcel)


{


Parcel *p = reinterpret_cast(parcel);



if(p == 0)


{


return 0;


}


return p->readInt64();


}



int parcel_readString16(void *parcel,char16_t* str, size_t len)


{


Parcel *p = reinterpret_cast(parcel);



if(p == 0)


{


return 0;


}



if (str == NULL || len <= 0)


{


return 0;


}



String16 str16 = p->readString16();



if (len > str16.size())


{


len = str16.size();


}



memcpy(str,str16.string(),len*2);



return len;


}



int parcel_readExceptionCode(void *parcel)


{


Parcel *p = reinterpret_cast(parcel);



if(p == 0)


{


return 0;


}


return p->readExceptionCode();


}




int parcel_readInplace(void *parcel,void* data, int len)


{


Parcel *p = reinterpret_cast(parcel);



if(p == 0)


{


return 0;


}



if (len >= 0 && len <= (int32_t)p->dataAvail())


{


const void *d = p->readInplace(len);


memcpy(data,d,len);


return len;


}


return 0;


}



int parcel_dataAvail(void *parcel)


{


Parcel *p = reinterpret_cast(parcel);



if(p == 0)


{


return 0;


}



return p->dataAvail();



}