55

Intentアプリのアセットフォルダー内でPDFを開くためにを起動しようとしています。何十もの投稿を読みましたが、まだ行き詰まっています。どうやら私は最初にPDFをSDカードにコピーしてからを起動する必要がありますIntent。それでも機能しません。

問題は起動にあると思うIntentので、次のコードを使用してSDカードにコピーしたファイル「example.pdf」を開こうとしています。

Log.w("IR", "TRYING TO RENDER: " + Environment.getExternalStorageDirectory().getAbsolutePath()+"/example.pdf");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(Environment.getExternalStorageDirectory().getAbsolutePath()+"/example.pdf"), "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

try {
    startActivity(intent);
    Log.e("IR", "No exception");
} 
catch (ActivityNotFoundException e) {
    Log.e("IR", "error: " + e.getMessage());
    Toast.makeText(InvestorRelations.this, 
        "No Application Available to View PDF", 
        Toast.LENGTH_SHORT).show();
}

これは私のLogCat出力です。

05-10 10:35:10.950: W/IR(4508): TRYING TO RENDER: /mnt/sdcard/example.pdf
05-10 10:35:10.960: E/IR(4508): No exception

このコードを実行する場合を除いて、次のトーストを取得します(私のアプリでは生成されません)

「サポートされているドキュメントタイプではありません」

ただし、インストールされているPDF表示アプリを使用して手動でドキュメントを開くことはできます。どんな助けでも大歓迎です。

4

6 に答える 6

129

このコードを試して、/sdcardからpdfファイルを表示してください

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/example.pdf");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
于 2012-05-10T08:48:58.953 に答える
0

assets フォルダー内のファイルが圧縮されるという事実に関係している可能性があります。

res/raw/フォルダに移動してみてください。

詳細: https://stackoverflow.com/a/4432804/413127

于 2012-05-10T08:49:19.907 に答える