1

openFile()大きなデータBLOBを返すように実装するコンテンツプロバイダーがあります。これらはSDカード上の暗号化されたファイルです。私は(明らかに)コンテンツプロバイダーから出る途中でデータを復号化して、消費者が使用できるようにする必要があります。

問題は、がopenFile()返されるParcelFileDescriptorことです。これにより、途中でデータを復号化する機会がなくなります。これに対する解決策はありますか?

もちろん、これは疑問を投げかけます...コンテンツプロバイダーを介してデータを公開している場合、それを暗号化する意味は何ですか?私の答えは、SDカードに暗号化されていないデータを保存することは、コンテンツプロバイダーを介してデータを公開するよりも少し悪いということだと思います。

4

1 に答える 1

0

これを解決する明確な方法はありません。しばらくすると削除される一時ファイルを作成することになりました。

私の最初の試みは、ファイルを開いた後にファイルを削除するというUnixのトリックを使用して、リーダーによって閉じられた直後にファイルを削除することでした。多くのアプリは、単一の論理的なオープンのためにコンテンツプロバイダーからデータを読み取って再読み取りすることがわかりました。たとえば、ギャラリーアプリは、最初に低解像度でデータを読み込んですばやく表示できるように見えます。次に、もう一度読み込んでフル解像度で表示できます。

于 2013-03-18T18:36:00.223 に答える