簡體   English   中英

如何檢查是否已將 SD 卡插入平板電腦:Android?

[英]How to check if a SD Card has been inserted to the tablet or not : Android?

我正在開發一個簡單的應用程序,它應該能夠訪問來自內部存儲和外部存儲(可移動卡)的文件,如 Micro SD 卡(當用戶插入 SDCARD 時)。

(不是設備附帶的內部 sdcard,我知道它可以使用Environment.getExternalStorageDirectory()訪問)

是否可以查明用戶是否已將 SD 卡插入設備? 如果是,是否可以獲取該 SD CARD 的路徑?

我發現硬編碼路徑不是一個好的選擇,因為不同的設備對於用戶插入的 sdcard 有不同的路徑。

很感謝任何形式的幫助。 謝謝你。

(不是設備附帶的內部 sdcard,我知道它可以使用 Environment.getExternalStorageDirectory() 訪問)

Android 僅將可移動存儲介質(例如 SD 卡)或內部(不可移動)存儲視為外部存儲。

以下是表單 developer.android.com

每個 Android 兼容設備都支持共享的“外部存儲”,您可以使用它來保存文件。 這可以是可移動存儲介質(例如 SD 卡)或內部(不可移動)存儲。 保存到外部存儲的文件是全球可讀的,用戶可以在啟用 USB 大容量存儲以在計算機上傳輸文件時對其進行修改。

要檢查 SDCard 的可用性,您可以使用以下代碼。

private boolean isExternalStorageAvailable() {

        String state = Environment.getExternalStorageState();
        boolean mExternalStorageAvailable = false;
        boolean mExternalStorageWriteable = false;

        if (Environment.MEDIA_MOUNTED.equals(state)) {
            // We can read and write the media
            mExternalStorageAvailable = mExternalStorageWriteable = true;
        } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
            // We can only read the media
            mExternalStorageAvailable = true;
            mExternalStorageWriteable = false;
        } else {
            // Something else is wrong. It may be one of many other states, but
            // all we need
            // to know is we can neither read nor write
            mExternalStorageAvailable = mExternalStorageWriteable = false;
        }

        if (mExternalStorageAvailable == true
                && mExternalStorageWriteable == true) {
            return true;
        } else {
            return false;
        }
    }

請閱讀http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

嘗試:

Boolean mSDcheck = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);

我將在這里向您展示最簡單的解決方案。 如果你想顯示sdcard是否插入,那么只需嘗試找到外部sdcard路徑的文件,代碼在這里:

File file = new File("/mnt/extSdCard");
         try
         {
         File list[] = file.listFiles();
         Toast.makeText(getApplicationContext(), "Yes sdcard is mounted, file count "+list.length, Toast.LENGTH_LONG).show();
         }
         catch(NullPointerException o)
         {
         Toast.makeText(getApplicationContext(), "Sorry no sdcard is mounted:", Toast.LENGTH_LONG).show();
         }

“外部存儲”不一定是 SD 卡,但可以安裝在內部存儲器中。 許多帶有 SD 卡的新時代 Android 設備上的getExternalStorageState()方法getExternalStorageState()檢查內部存儲器,但不會檢查 SD 卡。 更簡單的選擇是在 Context 類中使用getExternalMediaDirs() 方法 它返回具有絕對路徑的文件數組,可用於檢測 SD 卡的存在。

暫無
暫無

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

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