2016-11-30 58 views
1

我们试图在我们的应用程序中包含一些与URLImages集成的捆绑图像,但将它们解压缩到存储文件夹(使用与预期匹配的url路径)。
它在iOS和模拟器上正常工作,但无法在Android上找到或访问正确的路径。Codename one无法在Android上获取正确的存储路径

String storagePath = getStoragePath(url + suffix); 
OutputStream os = Storage.getInstance().createOutputStream(storagePath); 
... 

getStoragePath(String string){ 
    for (String s : Arrays.asList("/", "\\", "%", "?", "*", ":", "=")) { 
     string = StringUtil.replaceAll(string, s, "_"); 
    } 
    return string; 
} 

在android上,路径似乎是错误的。
有什么办法可以手动获取正确的路径,然后使用FileSystemStorage打开输出流?
我宁愿不硬编码任何路径,因为他们偶尔会改变,并且可能因系统而异。 我在这里没有看到任何其他选项?

回答

0

您正在编写一个明确隐藏并可能在将来会改变的实现细节。 FileSystemStorage & Storage在逻辑上是分开的,不应混用。

如果您想从FileSystemStorage访问,则应始终只使用该API并避免Storage

这是由设计,在某些操作系统存储在一个非常独特的方式,不映射到一个文件系统文件都实现...

+0

但即使是容易改变的接口应该是洽。 我的问题真的归结为为什么在Android中Storage.getInstance()。createOutputStream()不在应用程序存储中创建输出流? URLImage是否在幕后做了一些工作? – peopletookallthegoodnames

+0

编号Android设备A将使用一条路径,Android设备B将使用不同的路径。有些设备根本没有办法达到这个目的......'URLImage'没有这样做,我们也不会混用这些API,它们有完全独立的实现和使用。 –

+0

所以如果我使用Storage.getInstance()。createOutputStream(storagePath)它应该工作,但它不。在android上,路径不存在,或者没有指向正确的位置。有什么我需要再次生成文件夹 – peopletookallthegoodnames