簡體   English   中英

Android:如何獲取外部SD卡的存儲空間?

[英]Android: How to get storage of external sd-card?

在我的設備中,我有32GB的內部存儲器和64GB的SD卡。 我喜歡使用此方法獲取外部可用大小(基於此線程, Android獲得內部/外部內存的可用大小 ):

public static long getAvailableExternalMemorySize() {
    if (externalMemoryAvailable()) {
        File path = Environment.getExternalStorageDirectory();
        StatFs stat = new StatFs(path.getPath());
        long blockSize = stat.getBlockSize();
        long availableBlocks = stat.getAvailableBlocks();
        return availableBlocks * blockSize;

    } else {
        return 0;
    }
}

當我運行此代碼時,它僅顯示內部內存的可用存儲空間。 為什么不顯示外部SD卡大小? 在設備存儲上,我有11GB的可用空間,而在外部SD卡上有40GB的可用空間。

問題是沒有api可以訪問android上的外部SD卡。 在android> = 4.4上,無法寫入外部sd卡。

您唯一可以做的(非常特殊,不建議在公共應用程序中使用,但可以在受限環境中使用!),如果您確定設備的版本低於android 4.4:請列出迄今為止可以使用的路徑列表在許多設備上,並檢查所有設備是否正確存在。 也許你很幸運。

我找到了一種讀取可移動SD卡存儲的解決方案:

此方法以字節為單位重新計算可移動sd卡上的可用內存大小。

public static long getFreeExternalMemorySize() {
        String secStore = System.getenv("SECONDARY_STORAGE");
        File path = new File(secStore);
        StatFs stat = new StatFs(path.getPath());

        long blockSize = stat.getBlockSize();
        long availableBlocks = stat.getAvailableBlocks();

        return availableBlocks * blockSize;
}

閱讀以下鏈接后,您可以了解一個想法。

http://developer.android.com/guide/topics/data/data-storage.html#files外部

用於處理SD卡。 訪問前,請檢查是否已安裝sd卡。

http://developer.android.com/training/basics/data-storage/files.html#WriteExternalStorage

Check SD卡可寫且可讀。

http://developer.android.com/training/basics/data-storage/files.html#GetFreeSpace

獲取sdcard或內部存儲中的可用空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM