Fileprovider генерирует неправильный путь к файлу для PDF - PullRequest
0 голосов
/ 05 апреля 2019

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

Я установил необходимые флаги.

Кнопка, которая откроет PDF:

pdfindie.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath() + File.separator +
                        pdfindie.getText().toString());
                Uri path = getUriForFile(getApplicationContext(), "com.example.fernweh_fuck_off.MyFileProvider", file);
                Intent pdfOpenintent = new Intent(Intent.ACTION_VIEW);
                pdfOpenintent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                pdfOpenintent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                pdfOpenintent.setDataAndType(path, "application/pdf");
                try {
                    startActivity(pdfOpenintent);
                } catch (ActivityNotFoundException e) {

                }
            }
        });

Файл манифеста для провайдера:

  <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="com.example.fernweh_fuck_off.MyFileProvider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths"/>
        </provider>

Пути, которые я получаю:

D/error: file :    /storage/emulated/0/Download/0504348.pdf
D/error: uri path :    content://com.example.fernweh_fuck_off.MyFileProvider/external/Download/0504348.pdf

Путь, который мне нужен:

content://com.android.providers.downloads.documents/document/34
...