无法使用Intent打开文件

时间:2015-02-02 23:13:13

标签: android pdf android-intent

我在这里要做的是。我在我的SD卡中找到了Pdf文件夹并单击该文件,然后使用Adobe Reader完成操作。我成功完成了读取SD卡选项,它将布局中的所有pdf文件显示为gridview。但是,当我单击pdf文件时,它会打开Adobe阅读器,但无法打开该文件。它说“文件无法打开,因为它不是有效的pdf文档”。这是我的代码 -

以下是查找文件和放大器的代码。 SD卡中的文件夹

public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) 
{
    View view =inflater.inflate(R.layout.magica_pdf_layout, container, false);

    // Check for SD Card
    if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) 
    {
        Toast.makeText(PdfFragment.this.getActivity(), "Error! No SDCARD Found!", Toast.LENGTH_LONG).show();

    } 

    else 
    {
        // Locate folder in your SD Card
        file = new File(Environment.getExternalStorageDirectory()+ File.separator + "Book");

        // Create a new folder if no folder named exist
        file.mkdirs();


    }

这是onclick方法的部分

// Capture gridview item click
    grid.setOnItemClickListener(new OnItemClickListener() 
    {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
        {
            // get clicked file name from gridview
            String pdfname=(String)parent.getItemAtPosition(position);
             //prepare pdf file url
            selectedFile = new File(file.getAbsolutePath()+File.separator +pdfname+".pdf");
            Intent pdfIntent = new Intent();
            pdfIntent.setAction(android.content.Intent.ACTION_VIEW);
            pdfIntent.setDataAndType(Uri.fromFile(selectedFile), "application/pdf");
            startActivity(pdfIntent);
        }
    });

1 个答案:

答案 0 :(得分:0)

  

该文档无法打开,因为它不是有效的pdf文档

因为您没有传递pdf文件路径,所以当前只传递所有文件所在的文件夹路径。这样做:

@Override
    public void onItemClick(AdapterView<?> parent, 
                                 View view,int position, long id) 
    {
        // get clicked file name from gridview
         String pdfname=(String)parent.getItemAtPosition(position);
        // prepare pdf file url
        File selectedFile = new File(file.getAbsolutePath()+"/"+pdfname+".pdf");
        Intent pdfIntent = new Intent();
        pdfIntent.setAction(android.content.Intent.ACTION_VIEW);
        pdfIntent.setDataAndType(Uri.fromFile(selectedFile), "application/pdf");
        startActivity(pdfIntent);
    }