2016-11-30 59 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