2016-11-30 4 views
1

URLImagesと統合されているが、予想通りのURLパスを使ってストレージフォルダに解凍する、バンドルされた画像をアプリに含めようとしています。
これはiosとシミュレータで正常に動作しますが、Android上の正しいパスを見つけたり、正しいパスにアクセスできません。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; 
} 

この場合、アンドロイドには間違っているようです。
手動で正しいパスを取得し、FileSystemStorageを使用して出力ストリームを開く方法はありますか?
時々変更されるため、システムによってシステムによって異なる可能性があるので、私はむしろハードコードをハードコードしたいと思います。 これ以外のオプションはありませんか?

答えて

0

具体的に隠されており将来変更される可能性のある実装の詳細をコーディングしています。 FileSystemStorage & Storageは論理的に分離されており、混在しないでください。

FileSystemStorageからアクセスしたい場合は、常にそのAPIを使用してStorageを避けるようにしてください。

これは、いくつかのOSのストレージに、設計によるものですが、すべてのファイルシステムのファイルにマップされない非常にユニークな方法...

+0

で実装されている。しかし、それはインターフェイスを変更しがちだ場合でも、一貫する必要があります。 私の質問は、AndroidでStorage.getInstance()。createOutputStream()がアプリケーションストレージに出力ストリームを作成しない理由を説明します。 URLImageは効果を発揮するために何かをしていますか? – peopletookallthegoodnames

+0

いいえ、AndroidデバイスAは1つのパスを使用し、AndroidデバイスBは別のパスを使用します。いくつかのデバイスは、そのパスに到達するための手段を全く提供していません...「URLImage」はそういうことをしておらず、APIを混ぜ合わせていません。 –

+0

Storage.getInstance()。createOutputStream(storagePath)を使用するとうまくいくはずですが、そうではありません。アンドロイドでパスが存在しないか、正しい場所を指していません。最初にフォルダを生成する必要があるのですか? – peopletookallthegoodnames

関連する問題