Откройте PDF-файлы, расположенные внутри приложения (необработанная папка) - PullRequest
1 голос
/ 21 июля 2011

Мне нужно открыть во внешнем приложении (например, Adobe Reader) некоторые файлы PDF, расположенные внутри приложения (необработанная папка)

Я пытаюсь использовать этот код, который отлично работает, если файлы находятся на SD-карте, но, если я пытаюсь поместить каталог приложения (пакета) в строку файла, ничего не происходит:

public void onClick(View v) {
            File file = new File("/sdcard/myfile2.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(referencias.this, 
                        "No Application Available to View PDF", 
                        Toast.LENGTH_SHORT).show();
                }
            }
        }

Также я попробую этот код. Приложение Adobe Reader открыто, но я получаю неверную ошибку каталога доступа:

public void onClick(View v) {
            Intent i = new Intent();
            i.setAction(Intent.ACTION_VIEW);

                 i.setDataAndType(Uri.parse("file:///data/app/mypackage/res/raw/myfile.pdf"),
            "application/pdf");

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

Последнее решение состоит в том, чтобы каждый раз копировать файл pdf из папки raw на SD-карту, как в этом руководстве .

Но это действительно сложно и много кода.

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Если вы написали PDF-файл с помощью приложения, права доступа к файлам приложений могут не обеспечивать внешнюю видимость. Проверить: http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

0 голосов
/ 30 апреля 2013

попробуйте это:

File mFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
                "your_file.ext"); // ext meens extension .doc .zip ....

затем сохраните ваши данные в этом файле, сделайте намерение, которое вы сделали ... но используйте mFile вместо создания нового файла или

File fileForUri=new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"your_file.ext"

попробуйте это

...