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

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

王林
王林ke hadapan
2024-02-22 13:28:14394semak imbas

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");
    }

}

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam