Rumah > Java > javaTutorial > teks badan

Cara Menyelesaikan Isu Penciptaan Direktori dalam Android Marshmallow dan Seterusnya

Linda Hamilton
Lepaskan: 2024-10-24 03:25:31
asal
411 orang telah melayarinya

How to Resolve Directory Creation Issues in Android Marshmallow and Beyond

Masalah Penciptaan Direktori dalam Android Marshmallow dan Seterusnya

Android Marshmallow memperkenalkan perubahan besar pada cara aplikasi berinteraksi dengan sistem fail, menyebabkan masalah dengan penciptaan direktori untuk beberapa aplikasi asli. Apabila cuba mencipta direktori dalam Marshmallow, sesetengah pengguna mengalami tingkah laku yang tidak konsisten, dengan operasi kadangkala berfungsi dan gagal yang lain.

Memahami Isu

Punca perkara ini masalah terletak pada Rangka Kerja Akses Storan (SAF) baharu Android. Sebelum Marshmallow, aplikasi mempunyai akses tanpa had kepada storan dalaman dan luaran, membolehkan mereka membuat direktori secara bebas.

Walau bagaimanapun, SAF memperkenalkan kebenaran yang menyekat akses tulis kepada storan luaran secara lalai. Akibatnya, aplikasi mesti meminta kebenaran menulis secara eksplisit sebelum cuba membuat direktori pada storan luaran.

Penyelesaian: Minta Kebenaran Tulis

Untuk menyelesaikan isu penciptaan direktori, aplikasi mesti meminta kebenaran WRITE_EXTERNAL_STORAGE daripada pengguna sebelum cuba membuat direktori. Kebenaran ini memastikan bahawa aplikasi mempunyai kebenaran yang diperlukan untuk mengubah suai storan luaran.

Berikut ialah contoh kod yang menunjukkan cara meminta dan menyemak kebenaran menulis storan:

<code class="java">import android.Manifest;
import android.content.pm.PackageManager;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;


public class MyDevIDS extends AppCompatActivity {

        private static final int REQUEST_RUNTIME_PERMISSION = 123;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            if (CheckPermission(MyDevIDS.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
                // you have permission go ahead
                createApplicationFolder();
            } else {
                // you do not have permission go request runtime permissions
                RequestPermission(MyDevIDS.this, Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_RUNTIME_PERMISSION);
            }
        }

        @Override
        public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) {

            switch (permsRequestCode) {

                case REQUEST_RUNTIME_PERMISSION: {
                    if (grantResults.length > 0
                            &amp;&amp; grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                        // you have permission go ahead
                        createApplicationFolder();
                    } else {
                        // you do not have permission show toast.
                    }
                    return;
                }
            }
        }

        public void RequestPermission(Activity thisActivity, String Permission, int Code) {
            if (ContextCompat.checkSelfPermission(thisActivity,
                    Permission)
                    != PackageManager.PERMISSION_GRANTED) {
                if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
                        Permission)) {
                } else {
                    ActivityCompat.requestPermissions(thisActivity,
                            new String[]{Permission},
                            Code);
                }
            }
        }

        public boolean CheckPermission(Context context, String Permission) {
            if (ContextCompat.checkSelfPermission(context,
                    Permission) == PackageManager.PERMISSION_GRANTED) {
                return true;
            } else {
                return false;
            }
        }
    }</code>
Salin selepas log masuk

Setelah kebenaran diberikan, aplikasi boleh meneruskan untuk mencipta direktori menggunakan kaedah mkdirs() tanpa menghadapi masalah. Dengan melaksanakan penyelesaian ini, pembangun boleh memastikan bahawa aplikasi mereka boleh membuat direktori dengan pasti dalam Android Marshmallow dan versi yang lebih baru.

Atas ialah kandungan terperinci Cara Menyelesaikan Isu Penciptaan Direktori dalam Android Marshmallow dan Seterusnya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
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