3

ボタンをクリックすると PDF ファイルを開くアプリケーションを作成しています。以下は私のコードです:

File pdfFile = new File(
                        "android.resource://com.dave.pdfviewer/"
                                + R.raw.userguide);
                Uri path = Uri.fromFile(pdfFile);
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.setDataAndType(path, "application/pdf");

                startActivity(intent);

しかし、実行してボタンを押すと、「有効なPDFドキュメントではないため、ドキュメントを開くことができません」と表示されます。これは私を怒らせています。ファイルに正しくアクセスしていますか? 何か案は?ありがとう

4

2 に答える 2

6

pdf を assets フォルダーから sdcard フォルダーにコピーする必要があります。

.....
copyFile(this.getAssets().open("userguide.pdf"), new FileOutputStream(new File(getFilesDir(), "yourPath/userguide.pdf")));

File pdfFile = new File(getFilesDir(), "yourPath/userguide.pdf"); Uri path = Uri.fromFile(pdfFile);
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    intent.setDataAndType(path, "application/pdf");

                    startActivity(intent);


}

private void copyFile(InputStream in, OutputStream out) throws IOException {
        byte[] buffer = new byte[1024];
        int read;
        while((read = in.read(buffer)) != -1){
          out.write(buffer, 0, read);
        }
    }
于 2012-11-22T17:55:21.250 に答える
-1

android のフォルダー assets に pdf を挿入してから、次のことを試すことができます。

File pdfFile = new File(getAsset().open("userguide.pdf"));
                Uri path = Uri.fromFile(pdfFile);
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.setDataAndType(path, "application/pdf");

                startActivity(intent);

編集: フォルダ アセットからの URi は次のとおりです: file:///android_asset/RELATIVE_PATH 次に、ソースは次のようになります。

File pdfFile = new File("file:///android_asset/userguide.pdf");
                    Uri path = Uri.fromFile(pdfFile);
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    intent.setDataAndType(path, "application/pdf");

                    startActivity(intent);
于 2012-11-22T17:32:08.317 に答える