//client: c++
sp<IServiceManager> sm = defaultServiceManager();
if (sm == NULL) {
ALOGE("Unable to get default service manager!");
return -1;
}
sp<IBinder> service = sm->checkService(String16(SURFACEFLINGER));
if (service == NULL) {
ALOGE("unable to get surfaceflinger");
return -1;
}
Parcel data, reply;
data.writeInterfaceToken(String16("android.ui.ISurfaceComposer"));
service->transact(1013, data, &reply);
num = reply.readInt32();
//java:
// 如果ServiceManager獲取不到可通過反射獲取
mRemote = ServiceManager.checkService("servicename");
if (mRemote != null) {
try {
mRemote.linkToDeath(mDeathRecipient, 0);
} catch (RemoteException e) {
mRemote = null;
}
}
if (mRemote == null ) {
return null;
}
android.os.Parcel _data = android.os.Parcel.obtain();
Parcel _reply = Parcel.obtain();
try {
_data.writeInterfaceToken("service path");
mRemote.transact(TRANSACTION_LOAD_INFO, _data, _reply, 0);
return _reply.readString();
} catch (Exception e) {
Log.d(TAG, "getTotalInfo has Exception : " + e);
} finally {
_data.recycle();
}
return "";
binder一
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.