Доступ к файлам PDF для Android из папки Assets

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

Используя приведенный ниже код, я попытался получить доступ к файлу PDF в папке ресурсов, но приложение говорит: «Файл недоступен». Я искал в stackoverflow различные коды, и ни один из них не работал. Но когда я попытался извлечь файл APK, я смог увидеть файл PDF внутри папки с ресурсами.

Ниже приведен код, который я пробовал:

File file = new File("file://" + getFilesDir() + "/ccv.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(home.this, 
                        "No Application Available to View PDF", 
                        Toast.LENGTH_SHORT).show();
                }
            }
            else
            {
                Toast.makeText(home.this, 
                        "File not available", 
                        Toast.LENGTH_SHORT).show();
            }

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

заранее спасибо


person Jayasai Goutham    schedule 12.01.2015    source источник


Ответы (3)


я пытался получить доступ к файлу PDF в папке ресурсов

для этого,

new File("file://" + getFilesDir() + "/ccv.pdf");  

не даст вам путь к активам.

getFilesDir() просто

Возвращает абсолютный путь к каталогу в файловой системе, где были созданы файлы

Чтобы получить доступ к активам, используйте getAssets() или AssetManager

Вы можете обратиться к how-to-access-file-under-assets -папка-в-андроиде

person Pararth    schedule 12.01.2015

Наконец-то я смог найти ответ: к активам нельзя получить доступ с помощью файла, к ним можно получить доступ только с помощью Assetmanager.

AssetManager assetManager = getAssets();
InputStream ims = assetManager.open("ccv.pdf");
person Jayasai Goutham    schedule 12.01.2015
comment
Примите свой собственный ответ, чтобы он был полезен для других. - person Sushant; 30.07.2015

person    schedule
comment
что вы делаете, поместите этот pdf-файл в папку или напрямую в активы или попробуйте это, используя прямую ссылку в намерении - person Rohit Heera; 12.01.2015
comment
я поместил файл в папку активов. вот скриншот: tinypic.com/r/2yvw7kk/8 - person Jayasai Goutham; 12.01.2015
comment
позвольте мне проверить еще раз, потому что в моем случае он работает нормально, подождите - person Rohit Heera; 12.01.2015
comment
не могли бы вы удалить проверку существования файла - person Rohit Heera; 12.01.2015
comment
потому что файл работает для внешнего хранилища, а не для необработанной папки и папки активов - person Rohit Heera; 12.01.2015