4

私はシンプルなアプリに取り組んでいます。このアプリは、内部ストレージからだけでなく、Micro SDカード(ユーザーがSDCARDを挿入した場合)などの外部ストレージ(リムーバブルカード)からもファイルにアクセスできるはずです。

(デバイスに付属の内部SDカードではありません。を使用してアクセスできることを知っています Environment.getExternalStorageDirectory()

ユーザーがデバイスにSDカードを挿入したかどうかを確認することは可能ですか?はいの場合、そのSDカードのパスを取得することは可能ですか?

パスをハードコーディングするのは適切なオプションではないことがわかりました。デバイスが異なれば、ユーザーが挿入したsdcardのパスも異なります。

どんな助けでも大歓迎です。ありがとうございました。

4

4 に答える 4

12

(デバイスに付属の内部SDカードではありません。 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をお読みください

于 2012-10-04T07:09:23.917 に答える
6

試す:

Boolean mSDcheck = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
于 2012-10-04T07:00:26.497 に答える
0

ここで紹介する最も簡単な解決策。SDカードが挿入されているかどうかを表示したい場合は、外部SDカードパスのファイルを見つけてみてください。コードは次のとおりです。

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();
         }
于 2015-08-03T15:39:35.420 に答える