Об открытии .PDF в приложении для Android (хранится локально) - PullRequest
0 голосов
/ 24 марта 2012

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

Я сохранил свои файлы в каталоге / res / raw. Давайте назовем их file1.PDF, file2.PDF и т. Д.

public void onClick(View v) {
    switch (v.getId()) {
    case R.id.file1:
    Log.i(TAG, "Button one pressed");
    openPDF(Uri.parse("android:resource://test.pdf.files/raw/res/file1.PDF"));
        break;
}}

Выше мой код для onClick. Ниже приведен код функции openPDF.

public void openPDF(Uri url)
{
    File file = new File(url.toString());
    Log.i(TAG, url.toString());
    if (file.exists())
    { 
        Log.i(TAG, "File exists"); 
        Intent intent = new Intent();
         intent.setAction(android.content.Intent.ACTION_VIEW);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         intent.setDataAndType(Uri.fromFile(file), "application/pdf");
         try
         {
              getApplicationContext().startActivity(intent); 
         }
         catch (ActivityNotFoundException e) 
         {
             Log.e(TAG,"Activity not found exception");
         }
    }else{
        Log.i(TAG,"404: File not found!");
    }
}

Моя проблема заключается в следующем, я никогда не смогу пройти проверку if (file.exists ()). Я пытался заставить файл File принимать как Uri, URI и String, я также пробовал более или менее каждый вариант пути к файлу, например, «res / raw / file1.PDF», «raw / file.PDF», «test .pdf.files / сырье / RES / file1.PDF». Но в любом из этих случаев я просто не могу найти файл, который хочу открыть, кто-нибудь может понять, почему это не сработает?

Я пытался исправить это часами и часами, и я просто не могу обернуться вокруг него.

1 Ответ

0 голосов
/ 24 марта 2012

Я никогда не смогу пройти проверку if (file.exists ())

Конечно. Ваш Uri не указывает на файл. Ваш Uri указывает на ресурс. Ресурсы не являются файлами. Файлы не являются ресурсами.

Вы можете попробовать startActivity() с Intent, который использует ваш ресурс Uri. Если вы обнаружите, что программы просмотра PDF отказываются работать с этим Uri, вам необходимо скопировать ресурс в локальный файл, который можно прочитать в мире (например, на внешнем хранилище), и использовать эту копию с Uri.fromFile() чтобы запустить просмотрщик PDF.

...