PDF открывается и сразу закрывается

В моем приложении я загружаю pdf в папку «Загрузить» и пытаюсь открыть, используя приведенный ниже код.

String FileName="CardsDecks";
File imagePath = new File(this.getFilesDir(), "Download");
File newFile = new File(imagePath, FileName+ ".pdf");
Uri contentUri = FileProvider.getUriForFile(this, "com.cards.mycards.fileprovider", newFile);

Intent intent =new Intent(Intent.ACTION_VIEW)                                
    .setDataAndType(contentUri, "application/pdf")
    .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

Intent intent1 = Intent.createChooser(intent, "Open File");

startActivity(intent1);

Определение провайдера в файле манифеста

<provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="com.cards.mycards.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
</provider>

provider_paths.xml

<paths>
    <files-path name="CardsDecks" path="." />
</paths>

Приложение показывает только средство просмотра PDF-файлов и параметры слова, чтобы открыть файл, а не средство просмотра PDF, присутствующее в мобильном телефоне.

когда я нажимаю на средство просмотра PDF-файлов, оно открывается и сразу же закрывается. Я проверил файл в папке загрузки, файл присутствует там с присутствующим в нем содержимым.

пожалуйста, помогите выше.


person Ajinkya kadam    schedule 01.01.2020    source источник
comment
Проверьте, можете ли вы решить намерение. Для нескольких вариантов вы можете попробовать создать средство выбора намерений. stackoverflow.com/a/17453242/4694013   -  person Anoop M Maddasseri    schedule 01.01.2020
comment
Привет, Ануп, в этой ссылке упомянутый код не работает для AndroidX. Я получаю эту ошибку android.os.FileUriExposedException: файл:///storage/emulated/0/CardsDecks.pdf, выставленный за пределами приложения через Intent. получитьданные()   -  person Ajinkya kadam    schedule 01.01.2020
comment
setFlags имеет приоритет над addFlags.   -  person StenSoft    schedule 01.01.2020
comment
для androidx я написал так... Uri contentUri = FileProvider.getUriForFile(this, com.cards.mycards.fileprovider, imagePath); Намерение намерения = новое намерение (Intent.ACTION_VIEW).setDataAndType(Uri.fromFile(imagePath), application/pdf) .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); startActivity(намерение); но я получаю сообщение об ошибке java.lang.IllegalArgumentException: не удалось найти настроенный корень, который содержит /storage/emulated/0/Download/CardsDecks.pdf   -  person Ajinkya kadam    schedule 01.01.2020
comment
Привет, StenSoft, я удалил setflagsUri contentUri = FileProvider.getUriForFile(this, "com.cards.mycards.fileprovider", imagePath); Intent intent = new Intent(Intent.ACTION_VIEW) .setDataAndType(Uri.fromFile(imagePath), "application/pdf") .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);, но получаю сообщение об ошибке java.lang.IllegalArgumentException: не удалось найти настроенный корень, содержащий /storage/emulated/0/Download/CardsDecks.pdf   -  person Ajinkya kadam    schedule 01.01.2020
comment
Хорошей практикой является предоставление необходимой информации в описании при задании таких вопросов, как журналы, сведения об устройстве и т. д.   -  person Anoop M Maddasseri    schedule 01.01.2020
comment
если я изменю первую строку на File imagePath = new File(this.getFilesDir(), "Download"); File newFile = new File(imagePath, FileName+ ".pdf"); Uri contentUri = FileProvider.getUriForFile(this, "com.cards.mycards.fileprovider", newFile);, то я думаю, что мое приложение пытается открыть pdf, и оно сразу закрывается даже после ввода Intent intent = Intent.createChooser(target, "Open File");   -  person Ajinkya kadam    schedule 01.01.2020
comment
Кроме того, он не показывает приложение для просмотра PDF, чтобы открыть файл, он показывает приложения для дисков и слов, чтобы открыть PDF, но программа для просмотра PDF есть в моем мобильном телефоне, и я вижу файл PDF в папке загрузки с присутствующим в нем содержимым.   -  person Ajinkya kadam    schedule 01.01.2020
comment
Failed to find configured root.... Показать определение поставщика в файле манифеста. Также покажите пути провайдера в файле .xml. (В вашем посте оба. Не в комментариях).   -  person blackapps    schedule 01.01.2020
comment
Я добавил определение поставщика выше в своем сообщении, а также сведения о файле paths.xml.   -  person Ajinkya kadam    schedule 01.01.2020
comment
попробуйте заменить поставщика файлов на <paths> <files-path name="files" path="." /> </paths>   -  person Ashvin solanki    schedule 01.01.2020
comment
Привет, Эшвин... я изменил на ‹paths›‹files-path name=files path=. /›‹/paths›, но это не работает. он показывает только 2 варианта открытия pdf drive pdf viewer и word, и когда я нажимаю drive pdf viewer пытается открыть файл и тут же закрывается. также я не получаю никаких ошибок в консоли.   -  person Ajinkya kadam    schedule 02.01.2020