Android知識のSDCard

3331 ワード

EnvironmentについてgetExternalStorageState()の紹介
Environment.getExternalStorageState()は、携帯電話のSDCardを取得するための状態です.SDCardがマウントされている場合にのみ、書き込みと読み取りを行うことができます.SDCardステータスおよび読み込み関係は次の表のとおりです.
SD状態現象の説明|/mnt/sdcardディレクトリが存在するかどうか||canRead戻り|canWrite戻り|mnt/sdcardでファイルを作成|mnt/sdcardでフォルダを作成:————————————————————————————————————————————————————————::——————:————————————————:|:————————————:|:—MEDIA_MOUNTED|SDカード正常マウント|TRUE|TRUE|TRUE|TRUE|TRUE|TRUE|TRUE
MEDIA_REMOVED|メディアレス|TRUE|FALSE|FALSE|false|FALSE
MEDIA_UNMOUNTED|メディアあり、マウントされておらず、システムから削除|TRUE|FALSE|FALSE|false|FALSE
MEDIA_BAD_REMOVAL|メディアはマウント前に除去され、SDカード|TRUE|FALSE|FALSE|false|FALSE|FALSEを直接取り出す
MEDIA_CHECKING|ディスクチェック中、SDカード装着直後|TRUE|FALSE|FALSE|false|FALSE
MEDIA_SHARED|SDカードは存在するがマウントされておらず、USB大容量メモリ共有により、USBメモリ|TRUE|FALSE|FALSE|false:理由Permission denied|FALSEを開く
MEDIA_MOUNTED_READ_ONLY|sdカードは存在し、既にマウントされているが、マウント方式は読み取り専用|-|-|ではシミュレーションできず、SDカードでは権限の変更は許可されていない
MEDIA_NOFS|メディアは存在するが空白またはサポートされていないファイルシステム|-|-|ではシミュレーションできないため、SDカードをフォーマットしてからロードすると自動的にシステムファイルが生成されます
MEDIA_UNMOUNTABLE|SDカードは存在するがマウントできない、例えばメディア破損|-|-|でシミュレーションできない
上記の表から分かるように、SDカード状態でのみMEDIA_MOUNTEDの場合/mnt/sdcardディレクトリは読み取り可能で書き込み可能であり、ディレクトリおよびファイルを作成できます.SDカードを読み取るときは、一般的にこう書きます.
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            String root = Environment.getExternalStorageDirectory().getPath();
            }

SDカードを読み書きするには、この2つの権限を追加してください.
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

しかしAndroid 4.4からは、上記の方法でSDCardを内蔵するパスを取得します.Environment.isExternalStorageRemovable()では、携帯電話のメモリーカードが携帯電話に付属しているのか、外で挿抜可能なSDカードなのかを知ることができます.もちろん、この場合は1つのカードしかない場合を指します.しかし、現在、国内の多くの携帯電話はデュアルメモリカードをサポートしています.以下、一般的な外部SDカードの経路をまとめました./mnt/sdcard 2/mnt/sdcard-ext/mnt/ext_sdcard/mnt/sdcard/SD_CARD /mnt/sdcard/extra_sd/mnt/extrasd_bind/mnt/sdcard/ext_sd /mnt/sdcard/external_SD/storage/sdcard 1/storage/extSdCardこの方法でgetVolumePathsを用い,反射機構により経路を得て判断すればよい.
いくつかのパスの標準的な書き方getDataDirectory() =/data Environment.getDownloadCacheDirectory() =/cache Environment.getExternalStorageDirectory() =/mnt/sdcard Environment.getRootDirectory() =/system context.getCacheDir() =/data/data/com.mt.mtpp/cache context.getExternalCacheDir() =/mnt/sdcard/Android/data/com.mt.mtpp/cache context.getFilesDir() =/data/data/com.mt.mtpp/files
内容を増やす:プログラムを書く時、通常は各種の異なる経路を聞くことができて、例えば:相対経路、絶対経路など.Javaファイルの操作にとって、同じようにこれらのパスがあり、以前はこのapi:getCanonicalPath()にあまり気づかなかったが、実はこれは重要で、このapiは本当にファイルを手に入れることができる唯一のパスのapiであり、その戻り値は絶対パスであるに違いない.唯一のファイルを指します.絶対パスとして入力すると、絶対パスが返されます.相対パスとして入力と、getPath()が返すのはFile構築メソッドのパスであり、何が何であるか、getAbsolutePath()を増やさずに返すのは実はuserである.dir+getPath()の内容は、上から返された結果から得られます.getCanonicalPath()は、標準的なシンボルを完全に解析するパスを返します.
-------------------------ここで感謝http://m.blog.csdn.net/blog/shenqi_sh/9875349,http://www.cnblogs.com/mengdd/p/3742623.html2篇の招待状の作者!!本文はオリジナルではなく、下のメモにすぎない.
参照リンク:http://www.vogella.com/articles/Android/article.html#resources_android
http://www.coreservlets.com/android-tutorial/