简体   繁体   中英

Pdf file is not opening in Android

I would like to open a pdf file ( which is available in Downloads folder in Android phone) during on click on the 'pdfButton' While performing the action, nothing happens, there are either no errors logged or pdf file is displayed. Could some one please help ?

package com.mycompany.myfirstglapp;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.SurfaceView;
import android.webkit.WebView;
import android.widget.Toast;
import java.io.File;

/**
 * Created by admin on 1/11/2016.
 */

public class PdfActivity extends Activity {
    private SurfaceView surface;
    Button pdfButton;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pdf);
        surface = (SurfaceView) findViewById(R.id.pdfSurface);
        pdfButton = (Button) findViewById(R.id.pdfView);

        pdfButton .setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    // On click will call the showPdf method to display the pdf file in sd card or downloads 

                    showPdf(view);
                }
            });



    }


   public void showPdf(View view)  {

        // The pdf file [LawsofthegamewebEN_Neutral.pdf] is avaialble in Android > Downloads folder.

        File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ "/LawsofthegamewebEN_Neutral.pdf");

        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(PdfActivity.this,
                        "No Application Available to View PDF",
                        Toast.LENGTH_SHORT).show();
            }
        }

    }



}

If you step through the code with your debugger, or put more logging statements in, I suspect that you will find that file.exists() returns false . And, at the moment, you do not do anything in that case.

I would like to open a pdf file ( which is available in Downloads folder in Android phone)

That is not where your code is looking. Replace:

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ "/LawsofthegamewebEN_Neutral.pdf");

with:

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "LawsofthegamewebEN_Neutral.pdf");

Also note that your file.exists() call means that you will need to hold the READ_EXTERNAL_STORAGE permission.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM