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
Lepaskan: 2024-12-14 19:04:13
asal
440 orang telah melayarinya

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();
    }
}
Salin selepas log masuk
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();
        }
    }
}
Salin selepas log masuk

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)
Salin selepas log masuk
`

`

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan