Разрешение отклонено при вызове File.createNewFile () | Android

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

var icon: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.namelogo) val shareIntent = Intent(Intent.ACTION_SEND) shareIntent.type = "image/*" val bytes = ByteArrayOutputStream() icon.compress(Bitmap.CompressFormat.JPEG, 100, bytes) val path = File.separator + "temporary_file.jpg" val f = File(Environment.getExternalStorageDirectory().toString(), path) try { if (!f.parentFile.exists()) f.parentFile.mkdirs() if (!f.exists()) f.createNewFile() f.createNewFile() val fo = FileOutputStream(f) fo.write(bytes.toByteArray()) } catch (e: IOException) { Log.e("path = ", "+ $path " + e.toString()) e.printStackTrace() } shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/IronyBalls/temporary_file.jpg")); startActivity(Intent.createChooser(shareIntent, "Share Image")) 

До сих пор я нашел решения только для использования

 if (!f.parentFile.exists()) f.parentFile.mkdirs() if (!f.exists()) f.createNewFile() 

а также

установить разрешение

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

что я уже использовал. Но все равно gettig error, как показано ниже в вкладке «Ошибка»

E / path =: + /temporary_file.jpg java.io.IOException: разрешение отклонено

и на вкладке «Информация»

W / System.err: java.io.IOException: разрешение отклонено

W / System.err: at java.io.UnixFileSystem.createFileExclusive0 (собственный метод)

W / System.err: at java.io.UnixFileSystem.createFileExclusive (UnixFileSystem.java:280)

W / System.err: at java.io.File.createNewFile (File.java:948) W / System.err: at com.irony.balls.MainActivity $ onCreate $ 8.onClick (MainActivity.kt: 277)

W / System.err: at android.view.View.performClick (View.java:5611)

10-15 20: 33: 17,912 29759-29759 / com.irony.balls W / System.err: at android.view.View $ PerformClick.run (View.java:22276) 10-15 20: 33: 17.912 29759- 29759 / com.irony.balls W / System.err: at android.os.Handler.handleCallback (Handler.java:751) 10-15 20: 33: 17.912 29759-29759 / com.irony.balls W / System.err : at android.os.Handler.dispatchMessage (Handler.java:95) 10-15 20: 33: 17.912 29759-29759 / com.irony.balls W / System.err: at android.os.Looper.loop (Looper. java: 154) 10-15 20: 33: 17.912 29759-29759 / com.irony.balls W / System.err: at android.app.ActivityThread.main (ActivityThread.java:6195) 10-15 20: 33: 17.912 29759-29759 / com.irony.balls W / System.err: at java.lang.reflect.Method.invoke (родной метод) 10-15 20: 33: 17.912 29759-29759 / com.irony.balls W / System. err: at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:874)

10-15 20: 33: 17.912 29759-29759 / com.irony.balls W / System.err: at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:764)

Если ваше устройство работает на Android 6 или выше, вы уже запросили разрешения во время выполнения?

Подробнее см. https://developer.android.com/training/permissions/requesting.html .