Открыть PDF в приложении для Android - PullRequest
16 голосов
/ 21 мая 2011

Я работаю над приложением, в котором нужно открыть файл pdf на устройстве.

Я получил код в Интернете, который похож на большинство примеров.Но дело в том, что я не могу открыть файл, и элемент управления переходит непосредственно к части «Exception».

Вот код ниже:

public class MyPDFDemo extends Activity 
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)   
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    Button OpenPDF = (Button) findViewById(R.id.button);
    OpenPDF.setOnClickListener(new View.OnClickListener()
    { 
        public void onClick(View v) 
        {
            File pdfFile = new File("/sdcard/Determine_RGB_Codes_With_Powerpoint [PDF Library].pdf"); 
            if(pdfFile.exists()) 
            {
                Uri path = Uri.fromFile(pdfFile); 
                Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
                pdfIntent.setDataAndType(path, "application/pdf");
                pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

                try
                {
                    startActivity(pdfIntent);
                }
                catch(ActivityNotFoundException e)
                {
                    Toast.makeText(MyPDFDemo.this, "No Application available to view pdf", Toast.LENGTH_LONG).show(); 
                }
            }

        }
    });

}

Когда я запускаюэтот код: я имел обыкновение видеть "Нет приложения, доступного для просмотра PDF".Может кто-нибудь, пожалуйста, мне, чтобы просмотреть PDF-файл.

Ответы [ 3 ]

9 голосов
/ 06 июня 2011

Поскольку у вашего блока catch есть исключение ActivityNotFoundException, это означает, что у вас нет действия / приложения, которое могло бы прочитать формат файла application / pdf.Установите любую программу просмотра PDF с Android Market (Adobe недавно выпустила их) или используйте вышеупомянутую программу просмотра PDF с открытым исходным кодом, и ваша проблема, скорее всего, будет решена.

http://code.google.com/p/apv/downloads/list

https://market.android.com/details?id=cx.hell.android.pdfview&feature=search_result

Когда вы запускаете действие с заданными параметрами, оно ищет все приложения / Действия / Intents, которые зарегистрированы, чтобы открыть формат PDF.Поскольку на вашем устройстве их нет, вы получаете исключение ActivityNotFoundException

2 голосов
/ 26 мая 2016

Сначала установите устройство чтения PDF на устройстве. чем использовать этот код для чтения PDF-файла из внутренней памяти.

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    final TextView tv = (TextView)findViewById(R.id.tv);
    Button bt=(Button)findViewById(R.id.openbtn);
    bt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

    File pdfFile = new File(Environment.getExternalStorageDirectory(),"Leave.pdf");
    if(pdfFile.exists())
    {
    Uri path = Uri.fromFile(pdfFile);
    Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
    pdfIntent.setDataAndType(path, "application/pdf");
    pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    try{
        startActivity(pdfIntent);
    }catch(ActivityNotFoundException e){
        tv.setText("No Application available to view PDF");
    }
    }
    else
    {
        tv.setText("File not found");
    }

        }
    });

}

2 голосов
/ 01 ноября 2011

Ваш код правильный, я также использовал этот код для открытия PDF-файла в программе просмотра.

Поскольку на вашем устройстве не установлено приложение Viewer, оно не может открыться без приложения Viewer.

Вы можете установить Adobe reader для Android.

Я не могу открыть PDF-файл в эмуляторе, поэтому мне нужно проверить его на моем устройстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...