私は絵を読み取るための適切なInputStreamを取得するには、このような何かを行うことができ、コンテンツプロバイダ、消費者のクライアント側:メモリにマップされたInputStreamをコンテンツプロバイダから返すか?
InputStream is = getContentResolver().openInputStream(pictureUri);
はそれは素敵なAPIである、とするサーバー側では、実際の呼び出しで、コンテンツプロバイダの結果:
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
// Open a proper ParcelFileDescriptor, most likely using openFileHelper(uri, mode)
}
しかし、どのようなURIにマッピングされた画像がない場合は、ファイルシステム上で見つけましたが、メモリリソースとして、またはオンザフライで生成されます。
マップされたメモリFile
またはInputStream
などを作成して、一時ファイルをディスクに保存する必要はなく、コンテンツプロバイダのコンシューマに返すことができますか?
働くかもしれない解決策ですが、私はそれをしたくないとして、それ。すべての種類のリモートデータを読み込むために 'ContentResolver#openInputStream()'メソッドを一貫して使用できるようにしたいのです。サーバがどのようにデータを作成/取得するかにかかわらず。これは、サーバーの実装をクライアントに公開しないという問題です。 – PeyloW
@PeyloWこの解決策を見つけましたか?私も解決策を探しています。 – Sunny
@Sunnyそれはハックではありません。だから私は一時ファイルの保存とファイル記述子の送信を終了しました。 – PeyloW