AndroidPdfViewer - не удается открыть PDF-документ из папки Assets.

Я работал с этой библиотекой PDF, пытаясь получить путь к месту, где находится файл PDF, но я продолжаю получать ошибку. Что мне здесь не хватает?

Проверяя свой Android Device Monitor, я вижу свою базу данных в этой папке базы данных, которая также находится в папке с ресурсами, но я не могу найти все файлы pdf? пожалуйста где они? проверьте изображение ниже

введите описание изображения здесь

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

`private void CopyReadAssets (String fileName) {AssetManager assetManager = this.getAssets ();

    InputStream in = null;
    OutputStream out = null;
    File file = new File(this.getFilesDir(), fileName);

    try
    {
        in = assetManager.open(fileName);
        out = this.openFileOutput(file.getName(), Context.MODE_WORLD_READABLE);

        Utility.copyFile(in, out);
        in.close();
        in = null;
        out.flush();
        out.close();
        out = null;
    } catch (Exception e)
    {
        Log.e("tag", e.getMessage());
    }

    Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
    File dir_file = new File(file.getAbsolutePath());

    //<-- Get FileType
    String mimeType = Utility.getFileMineType(dir_file);

    intent.setDataAndType(Uri.fromFile(file), mimeType); //"file://" + getFilesDir() + "/abc.pdf"),"application/pdf"
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    if(mimeType.equals("application/pdf")){

        Log.e(TAG, Uri.fromFile(file).toString()+" -- "+dir_file);

        //mPDFView = new StudentPdfViewer();
        // mPDFView.display("Symfony.pdf", false);

        //handle it as activity
        Intent intent1 = new Intent(this, PdfViewer.class);
        intent1.putExtra(Config.COURSE_FILE, fileName);
        //intent1.putExtra(SqliteDb.COURSE_NAME,  listCategory.get(0).getCategory_name());
        //intent1.putExtras(mBundle);
        startActivity(intent1);

    }else{

        try {
            startActivity(intent);
        } catch (ActivityNotFoundException e) {

            Toast.makeText(this, "Unable to load selected Course Material, Please check the Study Studio installation guide to install the required dependency softwares", Toast.LENGTH_LONG).show();
        }

    }


}

`


person Oyewole Samuel Success    schedule 16.08.2015    source источник


Ответы (1)


На устройстве нет «папки с активами» и нет «пути к тому месту, где находится файл PDF» на устройстве.

Содержимое папок assets/ в проекте вашего приложения хранится в APK. Вы можете получить доступ к ресурсам через AssetManager, и вы получите один из них, позвонив getAssets() с любого удобного Context, например, Activity.

person CommonsWare    schedule 16.08.2015
comment
Проблема здесь в том, что мне нужен uri-путь к файлу, находящемуся в папке с ресурсами, когда программа запущена, но приложению не удалось найти какой-либо файл по этому пути, я проверяю свой Android Device Monitor, чтобы увидеть, есть ли какой-либо файл, но в этом каталоге нет файла. это то, что я использовал `getFilesDir (). getAbsolutePath () + / + sample.pdf, мне что-то здесь не хватает? - person Oyewole Samuel Success; 18.08.2015