Android
 Computer >> コンピューター >  >> プログラミング >> Android

Androidで外部ストレージがマウントされているか確認する方法


このチュートリアルでは、Androidアプリで外部ストレージ(SDカードやUSBメモリなど)がマウントされているかどうかの情報を取得する方法を解説します。ストレージの状態を事前にチェックすることで、ファイルの読み書きが可能かどうかを判断できるようになります。

ステップ1:新規プロジェクトの作成

Android Studioを起動し、「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成しましょう。

ステップ2:レイアウトファイルの編集

res/layout/activity_main.xml に以下のコードを追加します。

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
   xmlns:app = "https://schemas.android.com/apk/res-auto"
   xmlns:tools = "https://schemas.android.com/tools"
   android:layout_width = "match_parent"
   android:gravity = "center"
   android:layout_height = "match_parent"
   tools:context = ".MainActivity">
   <TextView
      android:id = "@+id/text"
      android:textSize = "30sp"
      android:layout_width = "match_parent"
      android:layout_height = "match_parent" />
</LinearLayout>

上記のコードでは、ストレージのマウント情報を画面に表示するためのTextViewを配置しています。

ステップ3:MainActivity.javaの実装

src/MainActivity.java に以下のコードを追加します。

package com.example.myapplication;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
   TextView textView;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      textView = findViewById(R.id.text);
      String state = Environment.getExternalStorageState();
      if (Environment.MEDIA_MOUNTED.equals(state)) {
         textView.setText("Media Mounted");
      }
   }
}

コードのポイント

このコードの核となるのは Environment.getExternalStorageState() メソッドです。このメソッドは外部ストレージの現在の状態を文字列として返します。戻り値が Environment.MEDIA_MOUNTED と一致した場合、ストレージがマウント済みで読み書き可能な状態であることを意味し、ここでは「Media Mounted」と表示されます。

その他のストレージ状態

getExternalStorageState() が返す値は MEDIA_MOUNTED 以外にも複数あります。主な状態は以下の通りです。

  • MEDIA_MOUNTED:マウント済みで、読み書きともに可能
  • MEDIA_MOUNTED_READ_ONLY:マウント済みだが読み取り専用
  • MEDIA_UNMOUNTED:ストレージは存在するがマウントされていない
  • MEDIA_REMOVED:ストレージが取り外されている
  • MEDIA_BAD_REMOVAL:正しい手順を経ずに取り外された
  • MEDIA_NOFS:空白または未対応のファイルシステムのためマウント不可

実際のアプリ開発では、ファイル操作の前にこれらの状態を確認し、ストレージが利用可能かどうかを判定することが推奨されます。

アプリの実行

それではアプリを実行してみましょう。実機のAndroid端末をパソコンに接続していることを前提とします。Android Studioから実行するには、プロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。デバイス選択画面で自分のモバイルデバイスを選択すると、端末の画面に実行結果が表示されます。

Androidで外部ストレージがマウントされているか確認する方法

  1. Androidで現在のスレッドが生存中(alive)かどうかを確認する方法

    具体的な例に入る前に、まず「スレッド」とは何かを理解しておきましょう。スレッドとは軽量なサブプロセスのことであり、UIを中断させることなくバックグラウンド処理を実行するために使用されます。この記事では、Androidアプリにおいて現在実行中のスレッドが生存中(alive)かどうかを確認する方法を解説します。手順1:新規プロジェクトを作成するAndroid Studioを開き、File → New Project を選択して新しいプロジェクトを作成します。必要な項目をすべて入力してプロジェクトのセットアップを完了させてください。手順2:レイアウトファイル(activity_main.xml)にコ

  2. 【Android】現在のスレッドIDを取得する方法を解説

    本記事では、Androidアプリで現在実行中のスレッドIDを取得する方法を、サンプルコードとともに解説します。スレッドとは?例に入る前に、まず「スレッド」について簡単におさらいしておきましょう。スレッドとは、軽量なサブプロセス(処理の単位)のことであり、UIの動作を妨げることなくバックグラウンドで処理を実行するために使われます。メインスレッドとは別に動作させることで、画面の描画やユーザー操作をブロックせずに、重い処理を並行して行うことが可能になります。このサンプルでは、Thread.currentThread().getId() を呼び出すことで、現在実行中のスレッドIDを取得し、TextVi