Открытие pdf файла Ошибка: к этому файлу нет доступа. Проверьте местоположение или сеть и попробуйте снова. - PullRequest
0 голосов
/ 09 апреля 2020

Привет внутри адаптера. Я показываю кнопку для просмотра PDf. Когда я пытаюсь нажать на эту кнопку, она выдаёт мне эту ошибку. Ниже описан процесс, который я пробовал в своем приложении.

Может ли кто-нибудь помочь мне решить эту проблему.

This file could not be accessed Check the location or the network and try again.//error

holder.pdf.setOnClickListener(new View.OnClickListener() {

            @Override public void onClick(View v) {
                File file = new File(Environment.getExternalStorageDirectory(),
                        opportunity.getPdf_link());
               // Uri path = Uri.fromFile(file);
                Uri pdf = FileProvider.getUriForFile(mContext, mContext.getPackageName() + ".provider", file);

                Intent pdfOpenintent = new Intent(Intent.ACTION_VIEW);
                pdfOpenintent.setDataAndType(pdf, "application/pdf");
                pdfOpenintent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                pdfOpenintent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);


                try {
                    mContext.startActivity(pdfOpenintent);
                } catch (ActivityNotFoundException e) {
                    // handle no application here....
                }
            }

        });

Манифест:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths"/>
        </provider>

1 Ответ

0 голосов
/ 09 апреля 2020

Удалить:

pdfOpenintent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

Или, если вы действительно уверены, что вам нужен этот флаг, переключитесь на addFlags() вместо setFlags(). setFlags() заменяет флаг, который вы добавили в предыдущей строке ... и этот флаг (FLAG_GRANT_READ_URI_PERMISSION) гораздо важнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...