私のアプリがサーバーからファイルをダウンロードし、外部のサードパーティのアプリケーションでそれらのファイルを開くことを許可する機能を開発中です。タイプ)。Android:ダウンロードしたファイルを共有する
ファイルは、MIMEタイプとファイル拡張子を含むメタデータを含むバイト配列としてダウンロードされ、格納されます。
カスタムContentProvider
私のアプリはダウンロードされたファイルを制御する必要があるため、カスタムのContentProvider
のように見えます。つまり、他のアプリケーションによるアクセスは読み取り専用でなければなりません。 。
私のカスタムContentProvider
の実装については、いくつか不明です。私だけを見てきましたチュートリアルはそれだけで上書きしてopenFile()
を実装し、query()
、insert()
など「何もしない」とスタブ・メソッドを実装するために十分なされた2
- 間でのデータ共有に関係しているように見えましたか?
openFile()
を実装する方法があるとすれば、どのようにバイト配列からParcelFileDescriptor
を作成することができますか?
注:できる限りAPIレベル3(カップケーキ)までサポートする必要があります。
MemoryFileを使用することもできます。私は今このソリューションに取り組んでいます。うまくいけば、パフォーマンスは通常のファイルより速いです。 – Georgie
上記の私のコメントに関しては、コンテンツプロバイダのopenFile()実装でMemoryFileを使用しようとしましたが、成功しませんでした。 1つの理由は、最近のAndroidバージョンでは、MemoryFileに関連するParcelFileDescriptorのサポートが消えているということです。その前にも、アクセスするにはリフレクショントリックが必要でした。 – Georgie
バイト配列を 'ParcelFileDescriptor'に渡す方法はありますか?セキュリティ上の理由から、PDFファイルを電話に保存することはできません。 –