SDカードのチェック

外付けSDカードを装着しないタイプの Android端末 GALAXY NEXUS SC-01D などは、

android.os.Environment # getExternalStorageState() の結果は常にマウント済みである。

それを注意して、SDカードの使用可を問い合わせるメソッドをまとめた。

import java.io.File;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Environment;
import android.preference.PreferenceManager;
/**
 * SdCardUtil
 */

public final class SdCardUtil{
   private SdCardUtil(){}
   /**
    * SDカードマウント済みで使用できるか?
    * @return true=使用可能
    */

   public static boolean isSDcardExists(){
      try{
      File f = new File(System.getenv("EXTERNAL_STORAGE"));
      if (!f.exists()) return false;
      if (!f.isDirectory()) return false;
      if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) return false;
      if (f.listFiles().length > 0){
         return true;
      }
      }catch(Throwable e){
      }
      return false;
   }
   /**
    * SDカードマウント先のPATH
    * @return
    */

   public static String sdcardPath(){
      return System.getenv("EXTERNAL_STORAGE");
   }
}