将图像保存到设备并在cordova-plugin-file-transfer中使用它将返回ENCODING_ERR

时间:2017-07-19 14:35:03

标签: android cordova ionic-framework cordova-plugins android-image

我正在尝试为现有的cordova插件添加功能。该插件不允许将URI返回到特定图像,这正是我所需要的。为此,我必须创建图像的本地副本。我从来没有使用Android上的Java或一般的cordova插件。

我的更改似乎工作正常。文件被创建,插件返回该文件的URI(以/data/app/cache/image.jpg的形式)。

然而,当我将它传递给cordova-plugin-file-transfer时,我收到一个错误:FileError {code: 5, message: "ENCODING_ERR"}。我在这里找到了错误代码https://github.com/apache/cordova-plugin-file/#list-of-error-codes-and-meanings,但这对我没有帮助。

这是保存文件的代码段:

File outputDir = getContext().getCacheDir();

File outputFile = new File(outputDir, "cdvphotolibrary" + photoNameId);

try {
  BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outputFile));
  bos.write(photo.bytes);
  bos.flush();
  bos.close();
} catch (IOException e) {
  e.printStackTrace();
  callbackContext.error(e.getMessage());
}

callbackContext.success(outputFile.getAbsolutePath());

完整代码可在此处找到:https://github.com/AndreasGassmann/cordova-plugin-photo-library/blob/nativeFileUrls/src/android/PhotoLibrary.java#L226

我在Stackoverflow上阅读了很多关于在Android上保存图像的线程,但它们并非特定于Android,而且某些解决方案(如使用ImageIO)不起作用。

如果有人能指出我正确的方向,将会非常有帮助。

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,我只需要将file://添加到字符串中。

所以最后URI是file:///data/app/cache/image.jpg,文件插件能够读取它。