主题 : android 中间层如何传递“\r” 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 78809
精华: 0
发帖: 32
金钱: 165 两
威望: 33 点
综合积分: 64 分
注册时间: 2012-09-25
最后登录: 2013-02-21
楼主  发表于: 2012-12-10 17:18

 android 中间层如何传递“\r”

static public native int write(int fd, byte[] data);
我用友善提供的接口write发送“\r”(自己写的一个发送短信功能的应用程序),程序能正常运行(短信能成功)。
然后我自己写了一个JNI和HardWare中间层的库,在发送“\r”时候出现问题了。
我用的方法大概过程如下:
APP:
str2 ="ATD"+ edittext1.getText().toString()+";\r";
byte2 = str2.getBytes();
HardwareControler .write(i,byte2);

JNI:
char *buf;
buf = (char *)env->GetByteArrayElements(data,NULL);   //把byte类型转换成char *

Hardware:
write(fd,data,sizeof(data));



如何解决android “\r”数据转换问题???????
君子终日乾乾,夕惕若,厉,无咎
级别: 侠客
UID: 8588
精华: 0
发帖: 61
金钱: 310 两
威望: 65 点
综合积分: 122 分
注册时间: 2009-08-29
最后登录: 2018-02-08
1楼  发表于: 2012-12-10 20:38

 回 楼主(fandh2011) 的帖子

在你

write(fd,data,sizeof(data));

之前把data的每个byte都打印出来,你应该就知道数据上有问题了。

这里主要是你在
byte2 = str2.getBytes();
HardwareControler .write(i,byte2);

写进去的数据是把String16直接转换成byte数组,在jni里面需要从unicode转换成asiic码才行。具体你把data整个按照字节打印出来就可以看到问题了。
君子终日乾乾,夕惕若,厉,无咎