【发布时间】:2023-04-10 08:46:01
【问题描述】:
我正在尝试向现有的 cordova 插件添加功能。该插件不允许将 URI 返回到特定图像,这是我需要的。为此,我必须创建图像的本地副本。我从来没有在 Android 上使用过 Java,也没有在一般情况下使用过 cordova-plugins。
我的更改似乎运行良好。文件被创建,插件返回该文件的 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,但这并没有真正帮助我。
这是保存文件的代码sn-p:
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());
我在 Stackoverflow 上阅读了很多关于在 Android 上保存图像的帖子,但它们并不特定于 Android,并且某些解决方案(如使用 ImageIO)不起作用。
如果有人能指出我正确的方向,那将非常有帮助。
【问题讨论】:
-
我之前在处理文件和文件传输插件时遇到了这个问题。由于某种原因,即使返回 URI,文件也不会保存在缓存目录中。当我尝试时,它给出了任何错误,但我也无法使用文件管理器在相应文件夹中看到该文件。所以我继续使用外部目录方法。我在某处读到,只有在有根设备中才能写入缓存目录。不过不确定。看看这个链接 - github.com/gandhirajan/Cordova_File_Operations 它可能对你有帮助
标签: android cordova ionic-framework cordova-plugins android-image