Как создать каталог в nougat 7.0 .. Все устройства работают нормально ниже nougat 7.0, но в nexus 5x не создается каталог

#android-studio

#android-studio

Вопрос:

Я поместил это в манифест

 <provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="${applicationId}.provider"
    android:exported="true"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths"/>
</provider>
 

Создание пути Xml в Res

 <?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external_files" path="."/>
</paths>
 

Код Java следует:

 Intent shareIntent = new Intent(Intent.ACTION_SEND);
                shareIntent.setType("application/pdf");
                shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Sheep Drench Calculations " );
                shareIntent.putExtra(Intent.EXTRA_TEXT, "Please find attached the report generated from the Sheep Drench App");
                Uri pdfURI = FileProvider.getUriForFile(EmailSend.this,
                        BuildConfig.APPLICATION_ID   ".provider",
                        (new File(pdfDir ,"ResultPDF.pdf")));
                shareIntent.putExtra(Intent.EXTRA_STREAM, (pdfURI));
                startActivity(shareIntent);
 

Больше кода Java:

 File pdfDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath()   "/Dir");
                    if (!pdfDir.exists()) {
                        pdfDir.mkdir();
                    }
 

он создает каталог, но когда он переходит внутрь каталога, в нем через исключение нет такого каталога или файла.
Я попробовал отправить электронное письмо из файла, но проблема все еще существует .. и директор не создан…

Комментарии:

1. У вас есть решение?

Ответ №1:

Попробуйте изменить .mkdir() на .mkdirs () и убедитесь, что у вас есть разрешение на запись во внешнее хранилище в манифесте

Комментарии:

1. Я думаю, что в Nougat 7.0 поведение файловой системы полностью изменено, вот почему возникает эта проблема … каково же решение проблемы ? если кто -нибудь знает, пожалуйста, дайте мне знать… Спасибо

2. Работали на моем месте. Спасибо @Abhinandan Chakraborty

3. Сработало для меня! Большое спасибо! Кажется, .mkdir() не работает в API <29, но изменение его на .mkdirs() решило проблему.