Rumah > Java > teks badan

Tidak boleh membuat direktori atau fail untuk aplikasi saya walaupun saya mempunyai kebenaran

王林
Lepaskan: 2024-02-22 13:28:14
ke hadapan
338 orang telah melayarinya

Editor PHP Strawberry akan menjawab soalan biasa dalam pengaturcaraan Java: Walaupun anda mempunyai kebenaran, anda tidak boleh membuat direktori atau fail untuk aplikasi itu. Masalah ini mungkin berlaku dalam tetapan kebenaran sistem pengendalian, ralat laluan fail, fail sudah sedia ada, dsb. Dengan menyemak laluan fail, menyemak kebenaran sistem pengendalian dan memastikan bahawa fail itu tidak wujud, anda boleh menyelesaikan masalah ini dan memastikan program berjalan seperti biasa. Jika anda menghadapi situasi yang sama, anda juga boleh mencuba kaedah di atas untuk melihat sama ada ia boleh menyelesaikan masalah anda.

Kandungan soalan

Saya mempunyai aplikasi yang saya buat beberapa tahun lalu. Baru-baru ini saya hanya menyusun semula dengan sedikit perubahan supaya saya boleh menukar sdk sasaran dan masih disenaraikan dalam gedung mainan.

Ternyata ini secara asasnya merosakkan apl dalam sesetengah telefon (termasuk saya sendiri). Sebelum memuat naik, saya mengujinya pada telefon lain dan ia berfungsi dengan baik (versi android 8.1.0). Telefon saya menjalankan android 11 (tidak berfungsi).

Masalahnya nampaknya adalah dengan keupayaan untuk mencipta dan membaca fail dalam storan dalaman, sedangkan fokus aplikasi adalah mengekalkan satu fail.

Ini adalah fungsi yang saya cuba buat direktori. Ini hanyalah fungsi ujian yang saya panggil untuk penciptaan, ia bukan sebahagian daripada aplikasi asal:

public static void AttemptDirCreate(){
    String dirname = Environment.getExternalStorageDirectory().toString() + "/this_is_a_test";
    File dir = new File(dirname);

    System.err.println("Attempting to create directory: '" + dirname + "'");

    boolean make_result = false;
    if (!dir.exists()) {
        try {
            make_result = dir.mkdir();
        }
        catch (SecurityException se) {
            System.err.println("ERROR. Could not make dir. Reason: " + se.getMessage());
        }
    }

    if (make_result){
        System.err.println("MKDir result is true");
    }
    else {
        System.err.println("MKDir result is false");
    }

    if (dir.exists()){
        System.err.println("Dir has been created");
    }
    else {
        System.err.println("Was unable to create dir");
    }

}
Salin selepas log masuk

Masalahnya ialah direktori tidak dibuat dan tiada pengecualian dibuang. Apabila saya pergi ke maklumat aplikasi, saya melihat kebenaran untuk fail dan media.

Laluan ke direktori yang anda cuba buat ialah: '/storage/emulated/0/this_is_a_test'

Setahu saya, inilah jalan yang betul. Apl itu meminta kebenaran saya semasa mula-mula memasangnya.

Jadi mengapa ia tidak boleh mencipta direktori? Bagaimana untuk mengenal pasti masalah dan menyelesaikannya?

Sekadar untuk menjelaskan, ciri yang sama ini berfungsi pada android 8.1.0, tetapi bukan pada android 11. Tidak pasti, apakah pemotongan itu.

Penyelesaian

Anda tidak boleh membuat fail dan direktori dalam direktori akar storan luaran pada peranti Android 11+.

Sebaliknya gunakan salah satu daripada direktori awam sedia ada.

Seperti DCIM, gambar, dokumen...

Atas ialah kandungan terperinci Tidak boleh membuat direktori atau fail untuk aplikasi saya walaupun saya mempunyai kebenaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!