เข้าถึงไฟล์เฉพาะแอป

ในหลายกรณี แอปของคุณจะสร้างไฟล์ที่แอปอื่นๆ ไม่จำเป็นต้องเข้าถึง หรือ ก็ไม่ควรเข้าถึง ระบบจะระบุตำแหน่งดังต่อไปนี้สำหรับจัดเก็บ เฉพาะแอป

  • ไดเรกทอรีที่จัดเก็บข้อมูลภายใน: ไดเรกทอรีเหล่านี้มีทั้ง ตำแหน่งสำหรับจัดเก็บไฟล์ถาวร และอีกตำแหน่งสำหรับจัดเก็บ ข้อมูลแคช ระบบจะป้องกันไม่ให้แอปอื่นๆ เข้าถึงตำแหน่งเหล่านี้ และ ใน Android 10 (API ระดับ 29) ขึ้นไป ตำแหน่งเหล่านี้ได้รับการเข้ารหัส เหล่านี้ ลักษณะเช่นนี้ ทำให้ตำแหน่งเหล่านี้เป็นสถานที่ที่ดีในการจัดเก็บข้อมูลที่ละเอียดอ่อน มีเพียงแอปของคุณเท่านั้นที่เข้าถึงได้

  • ไดเรกทอรีพื้นที่เก็บข้อมูลภายนอก: ไดเรกทอรีเหล่านี้มีทั้ง ตำแหน่งสำหรับจัดเก็บไฟล์ถาวร และอีกตำแหน่งสำหรับจัดเก็บ ข้อมูลแคช แม้ว่าแอปอื่นอาจเข้าถึงไดเรกทอรีเหล่านี้ได้ หากแอปมีสิทธิ์ที่เหมาะสม ไฟล์ที่จัดเก็บไว้ในไดเรกทอรีเหล่านี้ มีไว้สำหรับใช้โดยแอปของคุณเท่านั้น หากคุณต้องการสร้างไฟล์ ที่แอปอื่นๆ ควรเข้าถึงได้ แอปของคุณควรจัดเก็บไฟล์เหล่านี้ไว้ใน ส่วนพื้นที่เก็บข้อมูลที่ใช้ร่วมกันของพื้นที่เก็บข้อมูลภายนอก แทน

เมื่อผู้ใช้ถอนการติดตั้งแอป ไฟล์ที่บันทึกไว้ในพื้นที่เก็บข้อมูลเฉพาะแอปจะถูก ลบแล้ว และด้วยลักษณะการทำงานนี้ คุณจึงไม่ควรใช้พื้นที่เก็บข้อมูลนี้เพื่อบันทึก ทุกอย่างที่ผู้ใช้คาดหวังว่าจะคงอยู่แยกจากแอปของคุณ สำหรับ เช่น ถ้าแอปของคุณอนุญาตให้ผู้ใช้ถ่ายภาพ ผู้ใช้คาดหวังว่า ผู้ใช้สามารถเข้าถึงรูปภาพเหล่านั้นได้ แม้ว่าจะถอนการติดตั้งแอปแล้วก็ตาม คุณจึงควร แต่ให้ใช้พื้นที่เก็บข้อมูลร่วมกันเพื่อบันทึกไฟล์ประเภทเหล่านั้น คอลเล็กชันสื่อ

ส่วนต่อไปนี้จะอธิบายวิธีจัดเก็บและเข้าถึงไฟล์ภายใน ไดเรกทอรีเฉพาะแอป

การเข้าถึงจากที่จัดเก็บข้อมูลภายใน

สำหรับแต่ละแอปพลิเคชัน ระบบจะจัดเตรียมไดเรกทอรีภายในที่จัดเก็บข้อมูลภายในที่ จัดระเบียบไฟล์ของแอปได้ โดยไดเรกทอรีหนึ่งออกแบบมาเพื่อใช้กับ ไฟล์ถาวร และอีกไฟล์หนึ่งมีไฟล์ ไฟล์ที่แคชไว้ แอปของคุณไม่ต้องใช้ระบบใดๆ สิทธิ์ในการอ่านและเขียนไปยังไฟล์ในไดเรกทอรีเหล่านี้

แอปอื่นๆ ไม่สามารถเข้าถึงไฟล์ที่จัดเก็บไว้ในที่จัดเก็บข้อมูลภายในได้ ซึ่งทำให้ ที่จัดเก็บข้อมูลภายในเป็นพื้นที่เก็บข้อมูลแอปที่แอปอื่นๆ ไม่ควรเข้าถึง

อย่างไรก็ตาม โปรดทราบว่าไดเรกทอรีเหล่านี้มักจะมีขนาดเล็ก ก่อนเขียน ไฟล์เฉพาะของแอปไปยังที่จัดเก็บข้อมูลภายใน แอปของคุณควรจะค้นหาไฟล์ ที่ว่างในอุปกรณ์

เข้าถึงไฟล์ถาวร

ไฟล์ถาวรทั่วไปของแอปจะอยู่ในไดเรกทอรีที่คุณ เข้าถึงโดยใช้ filesDir ของออบเจ็กต์บริบท เฟรมเวิร์กนี้มีวิธีการมากมายที่จะช่วยคุณได้ เข้าถึงและเก็บไฟล์ในไดเรกทอรีนี้

เข้าถึงและจัดเก็บไฟล์

คุณใช้ File API เพื่อเข้าถึงและจัดเก็บไฟล์ได้

เพื่อช่วยรักษาประสิทธิภาพของแอป อย่าเปิดและปิดในลักษณะเดียวกัน ไฟล์หลายครั้ง

ข้อมูลโค้ดต่อไปนี้แสดงวิธีใช้ File API

Kotlin

val file = File(context.filesDir, filename)

Java

File file = new File(context.getFilesDir(), filename);

จัดเก็บไฟล์โดยใช้สตรีม

นอกจากการใช้ File API แล้ว คุณยังสามารถเรียกใช้ openFileOutput() เพื่อรับ FileOutputStream ที่เขียน ลงในไฟล์ในไดเรกทอรี filesDir

ข้อมูลโค้ดต่อไปนี้แสดงวิธีเขียนข้อความบางอย่างลงในไฟล์

Kotlin

val filename = "myfile"
val fileContents = "Hello world!"
context.openFileOutput(filename, Context.MODE_PRIVATE).use {
        it.write(fileContents.toByteArray())
}

Java

String filename = "myfile";
String fileContents = "Hello world!";
try (FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIVATE)) {
    fos.write(fileContents.toByteArray());
}

วิธีอนุญาตให้แอปอื่นๆ เข้าถึงไฟล์ที่เก็บไว้ใน ไดเรกทอรีนี้ในที่จัดเก็บข้อมูลภายใน ให้ใช้ FileProvider พร้อมด้วย FLAG_GRANT_READ_URI_PERMISSION

เข้าถึงไฟล์โดยใช้สตรีม

หากต้องการอ่านไฟล์ในรูปแบบสตรีม ให้ใช้ openFileInput():

Kotlin

context.openFileInput(filename).bufferedReader().useLines { lines ->
    lines.fold("") { some, text ->
        "$some\n$text"
    }
}

Java

FileInputStream fis = context.openFileInput(filename);
InputStreamReader inputStreamReader =
        new InputStreamReader(fis, StandardCharsets.UTF_8);
StringBuilder stringBuilder = new StringBuilder();
try (BufferedReader reader = new BufferedReader(inputStreamReader)) {
    String line = reader.readLine();
    while (line != null) {
        stringBuilder.append(line).append('\n');
        line = reader.readLine();
    }
} catch (IOException e) {
    // Error occurred when opening raw file for reading.
} finally {
    String contents = stringBuilder.toString();
}

ดูรายการไฟล์

คุณจะได้อาร์เรย์ที่มีชื่อไฟล์ทั้งหมดภายใน filesDir ไดเรกทอรีโดยการโทร fileList() ดังที่แสดงใน ข้อมูลโค้ดต่อไปนี้

Kotlin

var files: Array<String> = context.fileList()

Java

Array<String> files = context.fileList();

สร้างไดเรกทอรีที่ซ้อนกัน

นอกจากนี้คุณยังสามารถสร้างไดเรกทอรีที่ซ้อนกัน หรือเปิดไดเรกทอรีภายในด้วยการเรียก getDir() ที่ใช้ Kotlin หรือโดยการส่งไดเรกทอรีรากและชื่อไดเรกทอรีใหม่ไปยัง File เครื่องมือสร้างในโค้ดแบบ Java

Kotlin

context.getDir(dirName, Context.MODE_PRIVATE)

Java

File directory = context.getFilesDir();
File file = new File(directory, filename);

สร้างไฟล์แคช

หากต้องการจัดเก็บข้อมูลที่ละเอียดอ่อนเพียงชั่วคราว คุณควรใช้ ไดเรกทอรีแคชที่กำหนดภายในที่จัดเก็บข้อมูลภายในเพื่อบันทึกข้อมูล เช่นเดียวกับ สำหรับพื้นที่เก็บข้อมูลเฉพาะแอปทั้งหมด ไฟล์ที่จัดเก็บไว้ในไดเรกทอรีนี้ ถูกนำออกเมื่อผู้ใช้ถอนการติดตั้งแอป แม้ว่าไฟล์ในไดเรกทอรีนี้ อาจถูกนำออกเร็วกว่านี้

ในการสร้างไฟล์ที่แคชไว้ โปรดโทร File.createTempFile():

Kotlin

File.createTempFile(filename, null, context.cacheDir)

Java

File.createTempFile(filename, null, context.getCacheDir());

แอปของคุณเข้าถึงไฟล์ในไดเรกทอรีนี้โดยใช้ พร็อพเพอร์ตี้ cacheDir ของ Context-Object และ File API

Kotlin

val cacheFile = File(context.cacheDir, filename)

Java

File cacheFile = new File(context.getCacheDir(), filename);

นำไฟล์แคชออก

แม้ว่าบางครั้ง Android จะลบไฟล์แคชออกเอง แต่คุณก็ไม่ควรพึ่งพา ในการล้างข้อมูลไฟล์เหล่านี้ให้คุณ คุณควรใช้ ไฟล์แคชของแอปภายในที่จัดเก็บข้อมูลภายใน

หากต้องการนำไฟล์ออกจากไดเรกทอรีแคชภายในที่จัดเก็บข้อมูลภายใน ให้ใช้หนึ่งใน วิธีการต่อไปนี้

  • เมธอด delete() ในออบเจ็กต์ File ที่แสดงถึงไฟล์ ดังนี้

    Kotlin

    cacheFile.delete()
    

    Java

    cacheFile.delete();
    
  • deleteFile() ของบริบทของแอป โดยส่งในชื่อไฟล์:

    Kotlin

    context.deleteFile(cacheFileName)
    

    Java

    context.deleteFile(cacheFileName);
    

การเข้าถึงจากที่จัดเก็บข้อมูลภายนอก

หากที่จัดเก็บข้อมูลภายในมีพื้นที่ไม่เพียงพอที่จะจัดเก็บไฟล์เฉพาะแอป ลองใช้ที่จัดเก็บข้อมูลภายนอกแทน ระบบจะมีไดเรกทอรีภายใน ที่จัดเก็บข้อมูลภายนอกที่แอปสามารถจัดระเบียบไฟล์ที่มีคุณค่าต่อผู้ใช้ ภายในแอปของคุณเท่านั้น โดยไดเรกทอรีหนึ่งออกแบบมาเพื่อประสบการณ์การใช้งาน ไฟล์ และอีกไฟล์มีแคชของแอป ไฟล์

ใน Android 4.4 (API ระดับ 19) ขึ้นไป แอปของคุณไม่จําเป็นต้องขอ สิทธิ์ที่เกี่ยวข้องกับพื้นที่เก็บข้อมูลเพื่อเข้าถึงไดเรกทอรีเฉพาะแอปภายในภายนอก พื้นที่เก็บข้อมูล ระบบจะนำไฟล์ที่จัดเก็บไว้ในไดเรกทอรีเหล่านี้ออกเมื่อแอป ถอนการติดตั้งแล้ว

ในอุปกรณ์ที่ใช้ Android 9 (API ระดับ 28) หรือต่ำกว่า แอปของคุณสามารถเข้าถึง ไฟล์เฉพาะแอปที่เป็นของแอปอื่นๆ โดยที่แอปต้องมี พื้นที่เก็บข้อมูลที่เหมาะสม เพื่อให้ผู้ใช้ควบคุมไฟล์ของตนเองได้มากขึ้น เพื่อจำกัดความยุ่งเหยิงของไฟล์ แอปที่กำหนดเป้าหมายเป็น Android 10 (API ระดับ 29) ขึ้นไปจะได้รับ การเข้าถึงที่จัดเก็บข้อมูลภายนอก หรือ กำหนดขอบเขต พื้นที่เก็บข้อมูล โดยค่าเริ่มต้น เมื่อกำหนดขอบเขต เปิดใช้พื้นที่เก็บข้อมูลอยู่ แอปจะเข้าถึงไดเรกทอรีเฉพาะแอปที่เกี่ยวข้องไม่ได้ ไปยังแอปอื่นๆ

ยืนยันว่าพื้นที่เก็บข้อมูลพร้อมใช้งาน

เนื่องจากพื้นที่เก็บข้อมูลภายนอกอยู่ในวอลุ่มที่ผู้ใช้อาจเป็นอุปกรณ์จริง สามารถนำออกได้ ให้ยืนยันว่าสามารถเข้าถึงระดับเสียงดังกล่าวก่อนที่จะพยายามอ่าน ข้อมูลเฉพาะแอปจากหรือเขียนข้อมูลเฉพาะแอปไปยังที่จัดเก็บข้อมูลภายนอก

คุณสามารถค้นหาสถานะของระดับเสียงได้โดยเรียกใช้ Environment.getExternalStorageState() หากสถานะที่แสดงผลคือ MEDIA_MOUNTED จากนั้น คุณสามารถอ่านและเขียนไฟล์เฉพาะแอปภายในที่จัดเก็บข้อมูลภายนอก หากเป็น MEDIA_MOUNTED_READ_ONLY คุณจะอ่านไฟล์เหล่านี้ได้เท่านั้น

เช่น วิธีการต่อไปนี้มีประโยชน์ในการระบุพื้นที่เก็บข้อมูล ความพร้อมจำหน่ายสินค้า [availability]:

Kotlin

// Checks if a volume containing external storage is available
// for read and write.
fun isExternalStorageWritable(): Boolean {
    return Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED
}

// Checks if a volume containing external storage is available to at least read.
fun isExternalStorageReadable(): Boolean {
     return Environment.getExternalStorageState() in
        setOf(Environment.MEDIA_MOUNTED, Environment.MEDIA_MOUNTED_READ_ONLY)
}

Java

// Checks if a volume containing external storage is available
// for read and write.
private boolean isExternalStorageWritable() {
    return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
}

// Checks if a volume containing external storage is available to at least read.
private boolean isExternalStorageReadable() {
     return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) ||
            Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED_READ_ONLY);
}

ในอุปกรณ์ที่ไม่มีที่จัดเก็บข้อมูลภายนอกแบบถอดได้ ให้ใช้คำสั่งต่อไปนี้เพื่อ เปิดใช้งานวอลุ่มเสมือนสำหรับการทดสอบตรรกะความพร้อมใช้งานของพื้นที่เก็บข้อมูลภายนอก:

adb shell sm set-virtual-disk true

เลือกตำแหน่งของพื้นที่เก็บข้อมูลจริง

บางครั้งอุปกรณ์ที่จัดสรรพาร์ติชันของหน่วยความจำภายในเป็น ที่จัดเก็บข้อมูลภายนอกมีช่องเสียบการ์ด SD ซึ่งหมายความว่าอุปกรณ์มี อุปกรณ์เล่มอื่นๆ อาจมีที่จัดเก็บข้อมูลภายนอกรวมอยู่ด้วย คุณจึงต้องทำดังนี้ ให้เลือกรายการที่จะใช้กับพื้นที่เก็บข้อมูลเฉพาะแอป

หากต้องการเข้าถึงสถานที่ต่างๆ โปรดโทร ContextCompat.getExternalFilesDirs() ดังที่แสดงในข้อมูลโค้ด องค์ประกอบแรกในอาร์เรย์ที่แสดงผลคือ เป็นปริมาณการจัดเก็บข้อมูลภายนอกหลัก ใช้ระดับเสียงนี้จนกว่าจะเต็ม หรือไม่พร้อมใช้งาน

Kotlin

val externalStorageVolumes: Array<out File> =
        ContextCompat.getExternalFilesDirs(applicationContext, null)
val primaryExternalStorage = externalStorageVolumes[0]

Java

File[] externalStorageVolumes =
        ContextCompat.getExternalFilesDirs(getApplicationContext(), null);
File primaryExternalStorage = externalStorageVolumes[0];

เข้าถึงไฟล์ถาวร

หากต้องการเข้าถึงไฟล์เฉพาะแอปจากที่จัดเก็บข้อมูลภายนอก โปรดเรียกใช้ getExternalFilesDir()

เพื่อช่วยรักษาประสิทธิภาพของแอป อย่าเปิดและปิดในลักษณะเดียวกัน ไฟล์หลายครั้ง

ข้อมูลโค้ดต่อไปนี้แสดงวิธีเรียกใช้ getExternalFilesDir():

Kotlin

val appSpecificExternalDir = File(context.getExternalFilesDir(null), filename)

Java

File appSpecificExternalDir = new File(context.getExternalFilesDir(null), filename);

สร้างไฟล์แคช

หากต้องการเพิ่มไฟล์เฉพาะแอปลงในแคชภายในที่จัดเก็บข้อมูลภายนอก ให้ใช้ มีการอ้างอิงถึง externalCacheDir:

Kotlin

val externalCacheFile = File(context.externalCacheDir, filename)

Java

File externalCacheFile = new File(context.getExternalCacheDir(), filename);

นำไฟล์แคชออก

หากต้องการนำไฟล์ออกจากไดเรกทอรีแคชภายนอก ให้ใช้เมธอด เมธอด delete() ในออบเจ็กต์ File ที่ แสดงไฟล์ดังนี้

Kotlin

externalCacheFile.delete()

Java

externalCacheFile.delete();

เนื้อหาสื่อ

หากแอปของคุณทำงานกับไฟล์สื่อที่ให้คุณค่าแก่ผู้ใช้เฉพาะภายใน แอปของคุณ คุณควรเก็บไว้ในไดเรกทอรีเฉพาะแอปภายในไดเรกทอรีภายนอก พื้นที่เก็บข้อมูล ดังที่แสดงในข้อมูลโค้ดต่อไปนี้

Kotlin

fun getAppSpecificAlbumStorageDir(context: Context, albumName: String): File? {
    // Get the pictures directory that's inside the app-specific directory on
    // external storage.
    val file = File(context.getExternalFilesDir(
            Environment.DIRECTORY_PICTURES), albumName)
    if (!file?.mkdirs()) {
        Log.e(LOG_TAG, "Directory not created")
    }
    return file
}

Java

@Nullable
File getAppSpecificAlbumStorageDir(Context context, String albumName) {
    // Get the pictures directory that's inside the app-specific directory on
    // external storage.
    File file = new File(context.getExternalFilesDir(
            Environment.DIRECTORY_PICTURES), albumName);
    if (file == null || !file.mkdirs()) {
        Log.e(LOG_TAG, "Directory not created");
    }
    return file;
}

สิ่งสำคัญคือคุณต้องใช้ชื่อไดเรกทอรีที่ระบุโดยค่าคงที่ API เช่น DIRECTORY_PICTURES ชื่อไดเรกทอรีเหล่านี้ช่วยให้มั่นใจว่าระบบดำเนินการกับไฟล์ได้อย่างถูกต้อง หากไม่มีไดเรกทอรีย่อยที่กำหนดไว้ล่วงหน้า ชื่อที่เหมาะกับไฟล์ของคุณ คุณสามารถ ให้ผ่าน null ไปยัง getExternalFilesDir() แทน การดำเนินการนี้จะแสดงรูท ไดเรกทอรีเฉพาะแอปภายในที่จัดเก็บข้อมูลภายนอก

พื้นที่ว่างของการค้นหา

ผู้ใช้จำนวนมากมีพื้นที่เก็บข้อมูลไม่เพียงพอ ดังนั้นแอปของคุณ ควรใช้พื้นที่อย่างรอบคอบ

หากคุณทราบล่วงหน้าว่าคุณเก็บข้อมูลไว้เท่าใด คุณก็สามารถหาคำตอบได้ว่า อุปกรณ์สามารถให้แอปของคุณได้โดยการโทร getAllocatableBytes() ค่าที่ส่งกลับมาจาก getAllocatableBytes() อาจมากกว่าค่าปัจจุบัน ปริมาณพื้นที่ว่างในอุปกรณ์ เนื่องจากระบบได้ระบุ ที่สามารถนำ ออกจากแอปอื่นๆ" ไดเรกทอรีของแคช

หากมีพื้นที่ว่างเพียงพอที่จะบันทึกข้อมูลของแอป โปรดเรียกใช้ allocateBytes() มิฉะนั้น แอปของคุณสามารถขอให้ผู้ใช้นำบางรายการออก ไฟล์จากอุปกรณ์หรือนำแคชทั้งหมดออก จากอุปกรณ์

ตัวอย่างข้อมูลโค้ดต่อไปนี้แสดงให้เห็นว่าแอปของคุณสามารถค้นหาพื้นที่ว่างได้อย่างไร ในอุปกรณ์

Kotlin

// App needs 10 MB within internal storage.
const val NUM_BYTES_NEEDED_FOR_MY_APP = 1024 * 1024 * 10L;

val storageManager = applicationContext.getSystemService<StorageManager>()!!
val appSpecificInternalDirUuid: UUID = storageManager.getUuidForPath(filesDir)
val availableBytes: Long =
        storageManager.getAllocatableBytes(appSpecificInternalDirUuid)
if (availableBytes >= NUM_BYTES_NEEDED_FOR_MY_APP) {
    storageManager.allocateBytes(
        appSpecificInternalDirUuid, NUM_BYTES_NEEDED_FOR_MY_APP)
} else {
    val storageIntent = Intent().apply {
        // To request that the user remove all app cache files instead, set
        // "action" to ACTION_CLEAR_APP_CACHE.
        action = ACTION_MANAGE_STORAGE
    }
}

Java

// App needs 10 MB within internal storage.
private static final long NUM_BYTES_NEEDED_FOR_MY_APP = 1024 * 1024 * 10L;

StorageManager storageManager =
        getApplicationContext().getSystemService(StorageManager.class);
UUID appSpecificInternalDirUuid = storageManager.getUuidForPath(getFilesDir());
long availableBytes =
        storageManager.getAllocatableBytes(appSpecificInternalDirUuid);
if (availableBytes >= NUM_BYTES_NEEDED_FOR_MY_APP) {
    storageManager.allocateBytes(
            appSpecificInternalDirUuid, NUM_BYTES_NEEDED_FOR_MY_APP);
} else {
    // To request that the user remove all app cache files instead, set
    // "action" to ACTION_CLEAR_APP_CACHE.
    Intent storageIntent = new Intent();
    storageIntent.setAction(ACTION_MANAGE_STORAGE);
}

สร้างกิจกรรมการจัดการพื้นที่เก็บข้อมูล

แอปของคุณสามารถประกาศและสร้างกิจกรรมที่กําหนดเอง ซึ่งเมื่อเปิดตัวแล้ว ให้ผู้ใช้จัดการข้อมูลที่แอปของคุณเก็บไว้ในอุปกรณ์ของผู้ใช้ คุณ ประกาศว่า "จัดการพื้นที่ทำงาน" ที่กำหนดเองนี้ กิจกรรมโดยใช้ android:manageSpaceActivity ในไฟล์ Manifest แอปจัดการไฟล์เรียกใช้การตั้งค่านี้ กิจกรรม แม้ว่าแอปของคุณจะไม่ส่งออกกิจกรรมก็ตาม นั่นก็คือ เมื่อการตั้งค่ากิจกรรมของคุณ android:exported ถึง false

ขอให้ผู้ใช้นำไฟล์บางรายการออกจากอุปกรณ์

หากต้องการขอให้ผู้ใช้เลือกไฟล์ในอุปกรณ์ที่จะนำออก ให้เรียกใช้ Intent ซึ่งมี ACTION_MANAGE_STORAGE การดำเนินการ Intent นี้จะแสดงข้อความแจ้งแก่ผู้ใช้ พรอมต์นี้จะสามารถทำได้ หากต้องการ แสดงปริมาณพื้นที่ว่างในอุปกรณ์ หากต้องการแสดงสิ่งนี้ ข้อมูลที่ใช้ง่าย ให้ใช้ผลลัพธ์จากการคำนวณต่อไปนี้

StorageStatsManager.getFreeBytes() / StorageStatsManager.getTotalBytes()

ขอให้ผู้ใช้นำไฟล์แคชทั้งหมดออก

หรือคุณจะขอให้ผู้ใช้ล้างไฟล์แคชออกจากทั้งหมดก็ได้ แอปในอุปกรณ์ ในการดำเนินการนี้ ให้เรียกใช้ Intent ที่มี ACTION_CLEAR_APP_CACHE การดำเนินการผ่าน Intent

แหล่งข้อมูลเพิ่มเติม

ดูข้อมูลเพิ่มเติมเกี่ยวกับการบันทึกไฟล์ลงในพื้นที่เก็บข้อมูลของอุปกรณ์ได้ที่ แหล่งข้อมูลต่อไปนี้

วิดีโอ