私のアプリでは、注釈付きの画像をエクスポートしています。エクスポートする画像をすべて事前に準備するのは効率が悪いため、エクスポートする画像をオンザフライでレンダリングしています。これは、URI がレンダリング パラメーターをエンコードするカスタム ContentProvider を使用して行います。その後、実際のレンダリングは ContentProvider.openFile() で行われます。これはすべてうまく機能します。
ただし、query() メソッドで MediaStore MediaColumns の結果も提供する必要があります。しかし、最終的な画像はまだレンダリングされていないため、データのサイズはわかりません。
解決策を探していると、次のコードに出会いました: http://code.google.com/p/openintents/source/browse/trunk/filemanager/FileManager/src/org/openintents/filemanager/FileManagerProvider.java?r=3267
121行目で、不明なサイズの場合、「Android docsに従って」「null」を返す必要があると述べています。しかし、Android ドキュメントでこのステートメントを見つけることができません。これは本当にそれを処理する方法ですか?実際、私が試したほとんどのアプリ (GMail など) で問題なく動作しますが、一部のアプリではファイル サイズがゼロと表示されます (AquaMail など)。
では、MediaStore.MediaColumns.SIZE で不明なファイル サイズに対して「null」を返すことは、これを処理する正しい方法ですか? はいの場合、これはどこに文書化されていますか?