5

PDFファイルをダウンロードし、アプリの内部メモリに(セキュリティ目的で)MODE_PRIVATEで保存するアプリがあります:

FileOutputStream fos = getApplicationContext().openFileOutput(LOCAL_FILE_NAME, Context.MODE_PRIVATE);

InputStream inputStream = entity.getContent();
byte[] buffer = new byte[1024];
int bufferLength = 0; 

while((bufferLength = inputStream.read(buffer)) > 0) {           
  fos.write(buffer, 0, bufferLength);      
}

fos.close();

ダウンロードしたPDFファイルを開いて表示する方法を教えてください。私は StackOverflow で検索してきましたが、これに対する明確な解決策が見つかりませんでした。

問題は、Android が PDF ファイルを開くためのネイティブ サポートを持っていないことだと思われるため、2 つのオプションがあると思います。

  1. 外部ライブラリを使用して PDF ファイルを表示します。うまく機能するものはありますか?

  2. インテントを起動して PDF ファイルを表示しますが、MODE_PRIVATE として保存されたファイルは外部アプリで開くことができないようです。ファイルを外部メモリにコピーしてから Intent を起動するソリューションをいくつか見つけましたが、この手順では MODE_PRIVATE オプションのセキュリティ目的が損なわれますよね?

読んでくれてありがとう

4

2 に答える 2

11

ダウンロードしたPDFファイルを開いて表示する方法を教えてください。

を作成しContentProviderて PDF ファイルを提供し、 と を一緒に使用しACTION_VIEW Intentて、ユーザーが選択した PDF ビューアでファイルを開きUriます。ContentProvider

このサンプル プロジェクトは、内部ストレージから PDF ファイルを提供する方法を示しています。

于 2013-01-14T21:58:47.417 に答える
1

内部ストレージのファイルを他のアプリで使用できるようにする最もクリーンな方法は、コンテンツ プロバイダーを使用することです。幸いなことに、Android にはFileProviderが付属しています。これは、ニーズを満たすだけの実装です。(@CommonsWare のアプローチとは逆に) コードを実装する必要はありません。マニフェストでプロバイダーを指定するだけで済みます。

于 2015-12-07T16:18:08.167 に答える