Rumah >Java >javaTutorial >Mengapa Saya Tidak Boleh Mencipta Direktori dalam Android 10, Walaupun dengan Kebenaran yang Diperlukan?

Mengapa Saya Tidak Boleh Mencipta Direktori dalam Android 10, Walaupun dengan Kebenaran yang Diperlukan?

Susan Sarandon
Susan Sarandonasal
2024-12-14 19:04:13447semak imbas

Why Can't I Create a Directory in Android 10, Even with Necessary Permissions?

Saya tidak dapat membuat direktori dalam Android 10. Ia berfungsi pada peranti sehingga Android Oreo saya mencuba dua cara untuk mencipta folder.

Menggunakan
    File.mkdir():
  • Di sini, kejayaan pembolehubah sentiasa
palsu
File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pastebin");
if (!f.isFile()) {
    if (!(f.isDirectory())) {
        success =  f.mkdir();
    }
}
yang bermaksud direktori itu tidak dicipta.

Menggunakan
    Files.createDirectory():
  • yang menyebabkan pengecualian ini:
File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pastebin");
if (!f.isFile()) {
    if (!(f.isDirectory())) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            try {
                Files.createDirectory(Paths.get(f.getAbsolutePath()));
            } catch (IOException e) {
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), R.string.unable_to_download, Toast.LENGTH_LONG).show();
            }
        } else {
            f.mkdir();
        }
    }
}

Saya telah melaksanakan kebenaran masa jalan dan

pzy64.pastebinpro W/System.err: java.nio.file.AccessDeniedException: /storage/emulated/0/Pastebin
pzy64.pastebinpro W/System.err:     at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:391)
pzy64.pastebinpro W/System.err:     at java.nio.file.Files.createDirectory(Files.java:674)
`

`

semuanya ditetapkan.

Jawapan:

Seperti yang pertama kali didedahkan pada Mac 2019, anda tidak lagi boleh mengakses mana-mana storan luaran atau storan boleh alih keluar secara lalai pada Lokasi Android 10. Ini termasuk Environment.getExternalStorageDirectory() dan kaedah lain pada Environment (contohnya, getExternalStoragePublicDirectory()).

Untuk Android 10 dan 11, anda boleh menambahkan android:requestLegacyExternalStorage="true" pada elemen Ini akan membolehkan anda memilih mod storan tradisional dan kod storan luaran sedia ada anda juga akan berfungsi.

Jika tidak, pilihan anda ialah:

Gunakan kaedah pada Konteks (seperti getExternalFilesDir()) untuk mengakses direktori pada storan luaran yang boleh ditulis oleh apl anda. Anda tidak memerlukan sebarang kebenaran untuk menggunakan direktori ini pada Android 4.4. Walau bagaimanapun, apabila apl anda dinyahpasang, data yang disimpan di sini akan dipadamkan.

    Gunakan rangka kerja akses storan (seperti ACTION_OPEN_DOCUMENT dan ACTION_CREATE_DOCUMENT).
  • Jika kandungan anda adalah media, anda boleh menggunakan MediaStore untuk meletakkan media di lokasi media standard.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mencipta Direktori dalam Android 10, Walaupun dengan Kebenaran yang Diperlukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn