SDカードが接続されているかどうか知る方法 書き込み可能かどうか 読み込み可能かどうか

SDカードの接続状態は
Environment.getExternalStorageState()
で知ることができます。

[参考記事] SDカードの空き容量を調べる方法

String status = Environment.getExternalStorageState();
if (status.equals(Environment.MEDIA_MOUNTED)) {
  // SDカードが接続されている
}

SDカードが読み込み可能かどうかを調べる方法

public boolean isSdCanRead() {
  //SDカードがあるかチェック
  String status = Environment.getExternalStorageState();
  if (!status.equals(Environment.MEDIA_MOUNTED)) {
    return false;
  }

  File file = Environment.getExternalStorageDirectory();
  if (file.canRead()){
    return true;
  }
  return false;
}

SDカードが書き込み可能かどうかを調べる方法

ただし容量などは考慮していません。
書き込みできない場合には次のようなエラーが出ます。

Permission denied

AndroidManifest.xml に次のパーミッション設定がされていない場合や、SDカード自体が書き込みロックがされている場合を検知できます。

AndroidManifest.xml の permission一覧

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
public boolean isSdCanWrite() {
  //SDカードがあるかチェック
  String status = Environment.getExternalStorageState();
  if (!status.equals(Environment.MEDIA_MOUNTED)) {
    return false;
  }

  File file = Environment.getExternalStorageDirectory();
  if (file.canWrite()){
    return true;
  }
  return false;
}

関連記事

スポンサーリンク

名古屋市東山動植物園

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る