Android binder-通过本机binder接口调用JAVA api时字符串被截断

Android binder-通过本机binder接口调用JAVA api时字符串被截断,android,string,parcel,android-binder,Android,String,Parcel,Android Binder,我正在编写一个测试代码来研究活页夹API,参考(参考示例也有类似的问题) 我编写了一个Java服务和一个本地客户端。看起来一切都很好,只是我无法获取返回字符串的全部内容 服务器端方法getName: @Override public String getName() throws RemoteException { Log.i("------>", "Calling method getName()"); return "123456"; } 客户端代理方法: Strin

我正在编写一个测试代码来研究活页夹API,参考(参考示例也有类似的问题)

我编写了一个Java服务和一个本地客户端。看起来一切都很好,只是我无法获取返回字符串的全部内容

服务器端方法getName:

@Override
public String getName() throws RemoteException {
    Log.i("------>", "Calling method getName()");
    return "123456";
}
客户端代理方法:

String16 BpTestServiceAPI::getName()
{
    Parcel data, reply;
    data.writeInterfaceToken(IRemoteControlServiceAPI::getInterfaceDescriptor());
    //By operation code to transact
    remote()->transact(GET_NAME, data, &reply);
    //Exception Code. In Java Level, aidl auto generate codes will process exceptioncode.
    reply.readExceptionCode();
    return reply.readString16();
}
问题是,当我试图打印getName()的字符串内容时,只能打印第一个字节。例如,我从服务器返回“123456”,但

ALOGE(“服务名称=%s”,bts->getName().string())

只给了我

E/(5344):服务名称=1

我还尝试打印String8实例的长度,在本例中为6。我尝试使用getCString并直接将其用作(char*),结果为空

那么,有人知道这里出了什么问题吗