0

使用cordova 2.6,我正在使用cordova.exec 调用插件。问题是如果在数组元素中传递的参数正在java端被剪切(从末尾被一些字符截断)。但是如果我将一个简单的字符串作为参数传递,它的传递就很好。

在字符串中传递了 5714 个字符并且它没有任何问题,但是在数组的第一个元素中传递 450 个字符会将数组切割成其原始长度的大约 1/4 (119) 。

然后尝试了以下方法:

  1. 将第一个数组元素转换为字符串。(使用javascript检查typeof)并通过但没有帮助。

  2. 创建了原始数组的子字符串并将静态限制传递给子字符串,即 substring(0,4000) 等,但没有运气。

  3. 克隆了原始数组并重复了第 1 步和第 2 步,但还是没有运气。

有人可以告诉我问题出在哪里吗?

增加了 Eclipse 堆内存并更改为 cordova 2.8.1,但结果相同。:(

4

1 回答 1

0

我得到了这种行为的原因。检查了许多图像,并在我的插件执行方法中执行了以下操作:

int myLength = args.getString(0).length();
Log.v(TAG,Character.toString(args.getString(0).charAt(myLength-1)));

在插件/Java 端获得字符为=。并在其末尾的 base64 字符串中插入一个 =。似乎科尔多瓦将这些分隔符插入到 base64string 中。

PS:通过 phonegap.js 发现参数被打包为 JSON.stringify ,之后无法获取更多。插入 = 的方式和位置。

于 2013-06-18T12:45:30.600 回答