ऐप्लिकेशन के लिए खास तौर पर बनी फ़ाइलें ऐक्सेस करना

कई मामलों में, आपका ऐप्लिकेशन ऐसी फ़ाइलें बना देता है जिन्हें अन्य ऐप्लिकेशन को ऐक्सेस करने की ज़रूरत नहीं होती या को ऐक्सेस नहीं करना चाहिए. सिस्टम इन जगहों को स्टोर करता है, ताकि ऐप्लिकेशन के लिए खास फ़ाइलें:

  • डिवाइस के स्टोरेज की डायरेक्ट्री: इन डायरेक्ट्री में, स्थायी फ़ाइलों को सेव करने के लिए जगह और सेव करने के लिए कोई दूसरी जगह कैश मेमोरी में सेव किया गया डेटा. सिस्टम, दूसरे ऐप्लिकेशन को इन जगहों की जानकारी ऐक्सेस करने से रोकता है और Android 10 (एपीआई लेवल 29) और उसके बाद वाले वर्शन पर, इन जगहों की जानकारी एन्क्रिप्ट (सुरक्षित) की जाती है. ये इन जगहों की विशेषताओं की वजह से, संवेदनशील जानकारी सेव की जा सकती है इसे सिर्फ़ आपका ऐप्लिकेशन ऐक्सेस कर सकता है.

  • बाहरी स्टोरेज की डायरेक्ट्री: इन डायरेक्ट्री में, स्थायी फ़ाइलों को सेव करने के लिए जगह और सेव करने के लिए कोई दूसरी जगह कैश मेमोरी में सेव किया गया डेटा. हालांकि, कोई दूसरा ऐप्लिकेशन इन डायरेक्ट्री को ऐक्सेस कर सकता है अगर उस ऐप्लिकेशन के पास ज़रूरी अनुमतियां हैं, तो इन डायरेक्ट्री में सेव की गई फ़ाइलों सिर्फ़ आपके ऐप्लिकेशन के इस्तेमाल के लिए हों. अगर आपको खास तौर पर ऐसी फ़ाइलें बनानी हैं अगर अन्य ऐप्लिकेशन को ऐक्सेस करना है, तो आपके ऐप्लिकेशन को ये फ़ाइलें बाहरी स्टोरेज का शेयर किया गया स्टोरेज आज़माएं.

जब कोई उपयोगकर्ता आपके ऐप्लिकेशन को अनइंस्टॉल करता है, तो ऐप्लिकेशन के लिए खास स्टोरेज में सेव की गई फ़ाइलें हटाया गया. इस व्यवहार की वजह से, आपको सेव करने के लिए इस स्टोरेज का इस्तेमाल नहीं करना चाहिए ऐसी कोई भी चीज़ हो जिसे उपयोगकर्ता आपके ऐप्लिकेशन से अलग बनाए रखना चाहता है. इसके लिए उदाहरण के लिए, अगर आपका ऐप्लिकेशन उपयोगकर्ताओं को फ़ोटो कैप्चर करने की अनुमति देता है, तो उपयोगकर्ता यह उम्मीद करेगा आपका ऐप्लिकेशन अनइंस्टॉल करने के बाद भी, वे उन फ़ोटो को ऐक्सेस कर सकें. इसलिए, आपको इसके बजाय, इस तरह की फ़ाइलों को सेव करने के लिए शेयर किए गए स्टोरेज का इस्तेमाल करें मीडिया कलेक्शन.

नीचे दिए सेक्शन में बताया गया है कि खास तौर पर ऐप्लिकेशन के लिए बनाई गई डायरेक्ट्री.

डिवाइस के स्टोरेज से ऐक्सेस करना

हर ऐप्लिकेशन के लिए, सिस्टम डिवाइस के स्टोरेज में डायरेक्ट्री उपलब्ध कराता है, जहां ऐप अपनी फ़ाइलों को व्यवस्थित कर सकता है. एक डायरेक्ट्री आपके ऐप्लिकेशन की स्थायी फ़ाइलें और अन्य में आपके ऐप्लिकेशन की कैश मेमोरी में सेव की गई फ़ाइलें होती हैं. आपके ऐप्लिकेशन को किसी सिस्टम की ज़रूरत नहीं है इन डायरेक्ट्री में मौजूद फ़ाइलों को पढ़ने और उनमें बदलाव करने की अनुमतियां दी जाती हैं.

दूसरे ऐप्लिकेशन, डिवाइस के स्टोरेज में सेव की गई फ़ाइलों को ऐक्सेस नहीं कर सकते. इससे डिवाइस का स्टोरेज, ऐप्लिकेशन के डेटा के लिए एक अच्छी जगह है, जिसे दूसरे ऐप्लिकेशन ऐक्सेस नहीं कर सकते.

हालांकि, ध्यान रखें कि ये डायरेक्ट्री छोटी होती हैं. लिखने से पहले खास तौर पर ऐप्लिकेशन-ज़रूरी फ़ाइलों को स्टोर करने की ज़रूरत नहीं है, तो आपके ऐप्लिकेशन को बिना किसी शुल्क के स्पेस पर सेट करें.

स्थायी फ़ाइलें ऐक्सेस करें

आपके ऐप्लिकेशन की सामान्य और स्थायी फ़ाइलें, एक डायरेक्ट्री में मौजूद होती हैं. इस डायरेक्ट्री में ये काम किए जा सकते हैं filesDir का इस्तेमाल करके ऐक्सेस किया गया हो प्रॉपर्टी को चुनें. यह फ़्रेमवर्क आपकी मदद करने के लिए, कई तरीके इस डायरेक्ट्री में फ़ाइलों को ऐक्सेस और स्टोर करें.

फ़ाइलें ऐक्सेस और स्टोर करना

फ़ाइलों को ऐक्सेस और सेव करने के लिए, File एपीआई का इस्तेमाल किया जा सकता है.

अपने ऐप्लिकेशन की परफ़ॉर्मेंस बनाए रखने के लिए, उसे न तो खोलें और न ही बंद करें फ़ाइल को कई बार इस्तेमाल करना ज़रूरी है.

यह कोड स्निपेट, File API को इस्तेमाल करने का तरीका बताता है:

Kotlin

val file = File(context.filesDir, filename)

Java

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

स्ट्रीम का इस्तेमाल करके फ़ाइल सेव करना

File एपीआई का इस्तेमाल करने के विकल्प के तौर पर, आपके पास कॉल करने का विकल्प होता है 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();

नेस्ट की गई डायरेक्ट्री बनाएं

कॉल करके, नेस्ट की गई डायरेक्ट्री भी बनाई जा सकती हैं या इनर डायरेक्ट्री भी खोली जा सकती है Kotlin पर आधारित में getDir() कोड डालकर या रूट डायरेक्ट्री और नई डायरेक्ट्री के नाम को 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 की प्रॉपर्टी कॉन्टेक्स्ट ऑब्जेक्ट और File एपीआई:

Kotlin

val cacheFile = File(context.cacheDir, filename)

Java

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

कैश मेमोरी में सेव की गई फ़ाइलें हटाना

Android कभी-कभी कैश फ़ाइलों को अपने-आप मिटा देता है. हालांकि, आपको इन बातों पर भरोसा नहीं करना चाहिए सिस्टम पर इन फ़ाइलों को मिटाएं. आपको हमेशा अपने मोबाइल स्टोरेज में सेव की गई ऐप्लिकेशन की कैश मेमोरी में सेव की गई फ़ाइलें.

डिवाइस के स्टोरेज में कैश डायरेक्ट्री से कोई फ़ाइल हटाने के लिए, इनमें से किसी एक फ़ाइल का इस्तेमाल करें नीचे दिए गए तरीके अपनाएं:

  • File ऑब्जेक्ट के लिए, delete() तरीका जो फ़ाइल को दिखाता है:

    Kotlin

    cacheFile.delete()
    

    Java

    cacheFile.delete();
    
  • कॉन्टेंट बनाने deleteFile() ऐप्लिकेशन के कॉन्टेक्स्ट के तरीके का इस्तेमाल करता है, जो फ़ाइल के नाम में पास होता है:

    Kotlin

    context.deleteFile(cacheFileName)
    

    Java

    context.deleteFile(cacheFileName);
    

बाहरी स्टोरेज से ऐक्सेस करना

अगर डिवाइस के स्टोरेज में ऐप्लिकेशन की खास फ़ाइलें सेव करने के लिए ज़रूरी जगह नहीं है, तो इसके बजाय, बाहरी स्टोरेज का इस्तेमाल करें. सिस्टम इसमें डायरेक्ट्री उपलब्ध कराता है बाहरी स्टोरेज, जहां ऐप्लिकेशन उपयोगकर्ता के लिए उपयोगी फ़ाइलों को व्यवस्थित कर सकता है सिर्फ़ आपके ऐप्लिकेशन में. एक डायरेक्ट्री, आपके ऐप्लिकेशन की सभी क्वेरी के लिए डिज़ाइन की गई है फ़ाइलें और अन्य में आपके ऐप्लिकेशन की कैश मेमोरी में सेव किया गया फ़ाइलें शामिल हैं.

Android 4.4 (एपीआई लेवल 19) या इसके बाद के वर्शन पर, आपके ऐप्लिकेशन को बाहरी स्टोरेज में ऐप्लिकेशन की खास डायरेक्ट्री ऐक्सेस करने के लिए, स्टोरेज से जुड़ी अनुमतियां स्टोरेज. इन डायरेक्ट्री में सेव की गई फ़ाइलें तब हटा दी जाती हैं, जब आपका ऐप्लिकेशन अनइंस्टॉल किया गया.

Android 9 (एपीआई लेवल 28) या इससे पहले के वर्शन वाले डिवाइसों पर, आपका ऐप्लिकेशन अन्य ऐप्लिकेशन से जुड़ी ऐप्लिकेशन-विशिष्ट फ़ाइलें, बशर्ते आपके ऐप्लिकेशन में में स्टोरेज की ज़रूरी अनुमतियां होनी चाहिए. उपयोगकर्ताओं को उनकी फ़ाइलों पर ज़्यादा कंट्रोल देने के लिए, फ़ाइलों को व्यवस्थित करने के लिए, Android 10 (एपीआई लेवल 29) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन को बाहरी स्टोरेज का स्कोप ऐक्सेस या स्कोप स्टोरेज, डिफ़ॉल्ट रूप से. दायरा होने पर डिवाइस का स्टोरेज चालू है. इसलिए, ऐप्लिकेशन इन डायरेक्ट्री को ऐक्सेस नहीं कर सकते अन्य ऐप्लिकेशन में कनेक्ट कर देते हैं.

पुष्टि करें कि स्टोरेज उपलब्ध है

क्योंकि बाहरी मेमोरी उस भौतिक वॉल्यूम पर रहता है, जो उपयोगकर्ता के पास हो सकता है को हटाने के लिए, पुष्टि करें कि पढ़ने से पहले आवाज़ को ऐक्सेस किया जा सकता है बाहरी स्टोरेज से ऐप्लिकेशन के लिए बनाया गया डेटा पाना या उसमें ऐप्लिकेशन के लिए खास डेटा सेव करना.

कॉल करके वॉल्यूम की स्थिति के बारे में क्वेरी की जा सकती है Environment.getExternalStorageState(). अगर रिटर्न की गई स्थिति यह है MEDIA_MOUNTED और इसके बाद बाहरी स्टोरेज से ऐप्लिकेशन की खास फ़ाइलों को पढ़ा और लिखा जा सकता है. अगर यह है MEDIA_MOUNTED_READ_ONLY, आप इन फ़ाइलों को सिर्फ़ पढ़ सकते हैं.

उदाहरण के लिए, स्टोरेज तय करने के लिए, नीचे दिए गए तरीके काम के हैं खरीदारी के लिए उपलब्धता:

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

डिवाइस को सेव करने के लिए कोई जगह चुनें

कभी-कभी, ऐसा डिवाइस जो अपनी डिवाइस की मेमोरी का बंटवारा इस तरह करता है बाहरी स्टोरेज में एसडी कार्ड का स्लॉट भी मिलता है. इसका मतलब है कि डिवाइस में कई वास्तविक वॉल्यूम में उपलब्ध है, जिसमें बाहरी मेमोरी हो सकता है, इसलिए आपको चुनें कि ऐप्लिकेशन के लिए खास तौर पर उपलब्ध स्टोरेज के लिए इनमें से किसका इस्तेमाल करना है.

अलग-अलग जगहों की जानकारी ऐक्सेस करने के लिए, कॉल करें 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);

कैश मेमोरी में सेव की गई फ़ाइलें हटाना

बाहरी कैश मेमोरी की डायरेक्ट्री से किसी फ़ाइल को हटाने के लिए, ऐसे File ऑब्जेक्ट पर delete() तरीका दिया गया है जो फ़ाइल का प्रतिनिधित्व करता है:

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

यह ज़रूरी है कि आप एपीआई कॉन्सटेंट से मिले डायरेक्ट्री के नामों का इस्तेमाल करें, जैसे कि 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 एट्रिब्यूट की वैल्यू सबमिट करें. फ़ाइल मैनेजर ऐप्लिकेशन इसे शुरू कर सकते हैं गतिविधि भले ही, आपका ऐप्लिकेशन गतिविधि को एक्सपोर्ट न करता हो; जब आपकी गतिविधि सेट होती है, android:exported से false.

उपयोगकर्ता से डिवाइस में मौजूद कुछ फ़ाइलें हटाने के लिए कहें

उपयोगकर्ता से, डिवाइस पर मौजूद फ़ाइलों को हटाने का अनुरोध करने के लिए, किसी इंटेंट को शुरू करें जिसमें शामिल है ACTION_MANAGE_STORAGE कार्रवाई. यह इंटेंट, उपयोगकर्ता को प्रॉम्प्ट दिखाता है. अगर ज़रूरी हो, तो यह प्रॉम्प्ट ये काम कर सकता है: डिवाइस पर उपलब्ध खाली जगह दिखाएं. इसे दिखाने के लिए के लिए, नीचे दी गई कैलकुलेशन के आधार पर तैयार किए गए नतीजों का इस्तेमाल करें:

StorageStatsManager.getFreeBytes() / StorageStatsManager.getTotalBytes()

उपयोगकर्ता से सभी कैश फ़ाइलें हटाने के लिए कहें

इसके अलावा, उपयोगकर्ता से सभी जगहों से कैश मेमोरी में सेव की गई फ़ाइलों को हटाने का भी अनुरोध किया जा सकता है ऐप पर जाएं. ऐसा करने के लिए, एक ऐसे इंटेंट को शुरू करें जिसमें ACTION_CLEAR_APP_CACHE इंटेंट कार्रवाई.

अन्य संसाधन

फ़ाइलों को डिवाइस के स्टोरेज में सेव करने के बारे में ज़्यादा जानने के लिए, इन संसाधनों को देखें.

वीडियो