以编程方式打开pdf文件进入菜单页面?

时间:2011-11-22 03:18:39

标签: android pdf android-intent

为什么每次尝试使用以下代码在SDCARD中打开pdf文件时,它实际上并不打开pdf文件本身,而是进入adobe reader的菜单?我的代码有什么问题吗?

Intent intent = new Intent();
    File pdfFile = new File("/sdcard/sample.pdf");
    Uri path = Uri.fromFile(pdfFile);
    intent.setAction(Intent.ACTION_VIEW); 
    intent.setData(path);
    intent.setType("application/pdf");
    intent.setPackage("com.adobe.reader");
    startActivity(intent);

2 个答案:

答案 0 :(得分:11)

不,没有错。您已将类型设置为pdf并将包指定为adobe.reader。这样做是为了在adobe reader中启动pdf。没有使用库(或自己编写代码)来呈现PDF并显示它们,就无法直接在应用程序中显示pdf。

请注意,如果您只设置类型而不是包,系统将找到可用于显示PDF的任何应用程序

修改

您可以尝试类似

的内容
    Intent intent = new Intent(Intent.ACTION_VIEW);
    File file = new File( filename  );
    intent.setDataAndType( Uri.fromFile( file ), "application/pdf" );
    startActivity(intent);

        Intent intent = new Intent();
        intent.setPackage("com.adobe.reader");
        intent.setDataAndType(Uri.fromFile(file), "application/pdf");
        startActivity(intent);

答案 1 :(得分:1)

这里我给出了我的pdf文件名。你给出了你的文件名。

    private static String FILE = Environment.getExternalStorageDirectory().getPath()+"/TestPDF.pdf";   

    File file = new File(FILE);

    if (file.exists()) {
        Uri path = Uri.fromFile(file);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(path, "application/pdf");
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        try {
            startActivity(intent);
        } 
        catch (ActivityNotFoundException e) {
            Toast.makeText(this, 
                "No Application Available to View PDF", 
                Toast.LENGTH_SHORT).show();
        }
    }