Получить правильный путь из средства выбора файлов - PullRequest
0 голосов
/ 18 марта 2019

Мне нужно добавить PDF-файл в мое приложение.Я уже смотрел на подобные вопросы, и ни один из них не работает.PdfReader продолжает выдавать исключение, которое говорит: Файл не найден.Поэтому я понял, что каталог неправильный.Вот мой код:

cardViewPlan.setOnClickListener(v -> {

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("application/pdf");
        startActivityForResult(intent, FILE_PICK_RESULT_CODE);
    });

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {
        case 1: {
            if (resultCode == RESULT_OK) {
                Uri uri = data.getData();

                String path = uri.getPath();
                File file = new File(path);

                txtFileName.setText(path);

                try {
                    PdfRenderer pdfRenderer = new PdfRenderer(ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY));

                    Bitmap bitmap;
                    final int pageCount = pdfRenderer.getPageCount();
                    for (int i = 0; i < pageCount ; i++) {
                        PdfRenderer.Page page = pdfRenderer.openPage(i);

                        int width = getResources().getDisplayMetrics().densityDpi / 72 * page.getWidth();
                        int height = getResources().getDisplayMetrics().densityDpi / 72 * page.getHeight();
                        bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

                        page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);

                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
                        bitmap.compress(Bitmap.CompressFormat.JPEG, 30, baos);
                        byte[] bytes = baos.toByteArray();
                        String filename = "PDF_IMG_" + UUID.randomUUID().toString() + ".jpg";                           
                    }

                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }
        break;

    }
}
...