[解決済み】リムーバブルSDカードの場所を検索する。
質問
外付けSDカードの場所を確認する一般的な方法はありますか?
と混同しないようにお願いします。 外部ストレージ .
Environment.getExternalStorageState()
は、内部 SD マウントポイントへのパスを返します。
/mnt/sdcard
. しかし、問題は外部SDについてです。どうすれば、次のようなパスを取得できるのでしょうか。
/mnt/sdcard/external_sd
(デバイスによって異なる場合があります)?
の出力のフィルタリングで終わりかな。
mount
コマンドをファイルシステム名で実行します。しかし、この方法が十分に堅牢であるかどうか、自信がありません。
解決方法は?
<ブロッククオート
Environment.getExternalStorageState()
は、内部 SD マウントポイントへのパスを返します。
いいえ。
Environment.getExternalStorageDirectory()
は、デバイスの製造元が「外部ストレージ」と見なしたものを指します。あるデバイスでは、これはSDカードのようなリムーバブルメディアです。あるデバイスでは、これはデバイス上のフラッシュの一部です。ここで、quot;外部ストレージとは、少なくともAndroid 1.xおよび2.xでは、ホストマシンにマウントされたときにUSBマスストレージモードでアクセス可能なものを指します。
しかし、質問は外部SDについてです。どのようにして "/mnt/sdcard/external_sd" のようなパスを取得するのでしょうか(デバイスによって異なるかもしれません)?
Androidには、上記のような外部ストレージとは別に、quot;外部SD"という概念がありません。
外部ストレージをオンボードフラッシュとし、SDカードも搭載している端末メーカーの場合、SDカードが使えるかどうか(保証はできません)、どのようなパスで使用するかなど、そのメーカーに問い合わせることが必要です。
アップデイト
最近気になることを2つ。
まず、Android 4.4+ では、リムーバブルメディア (例: 外部 SD") への書き込みアクセスは、そのメディア上のロケーションが
getExternalFilesDirs()
と
getExternalCacheDirs()
. 参照
Dave Smithの優れた分析
特に低レベルの詳細が必要な場合は、こちらをご覧ください。
次に、リムーバブルメディアへのアクセスがAndroid SDKの一部であるかどうかについて、誰かがとやかく言わないように、以下をご覧ください。 Dianne Hackbornの評価 :
Android 4.4まで、公式のAndroidプラットフォームは、以下のSDカードをサポートしていません。 すべて 外部ストレージが SD カードである昔ながらのストレージ レイアウト(現在もプラットフォームでサポートされています)と、Android 3.0 に追加された小さな機能(追加の SD カードをスキャンしてメディア プロバイダに追加し、アプリにそのファイルへの読み取り専用アクセスを与える)です(これも現在もプラットフォームでサポートされています)。
Android 4.4は、アプリケーションがSDカードをストレージとして実際に使用できるようになった最初のリリースです。 それ以前のSDカードへのアクセスは、プライベートでサポートされていないAPIを使用していました。 アプリのパーミッションを必要とせず、アプリ固有のストレージ領域を自由に使用でき、ファイルピッカーを経由する限り、SD カード上の他のファイルにもアクセスできます。
関連
-
[解決済み】Android TextView : "setTextで表示されたテキストを連結しない" について
-
[解決済み】メソッド 'findViewById(int)' を解決できない。)
-
[解決済み】java.lang.RuntimeException: アクティビティを開始できない ComponentInfo
-
[解決済み】Dalvikとdalvik-cacheとは何ですか?
-
[解決済み】起動アクティビティを特定できませんでした。デフォルトのアクティビティが見つかりませんでした
-
[解決済み】sendUserActionEvent()がnullである。
-
[解決済み] TypeError: cb.apply は関数ではありません。
-
[解決済み] sendUserActionEvent() は null です。
-
[解決済み] BIOSのセキュリティ設定でVT-xを有効にする(お使いのコンピュータのドキュメントを参照)。
-
[解決済み] Android SDK の場所には空白を含めないでください。NDK ツールで問題が発生するためです。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】このアクティビティは、すでにウィンドウ装飾によって提供されるアクションバーを持っています。
-
[解決済み】ビットマップを保存する場所について
-
[解決済み】Android Studio。Android.support.design.widget.FloatingActionButton クラスを膨らませるのにエラーが発生する。
-
[解決済み】android.content.res.Resources$NotFoundExceptionの取得:androidにリソースが存在する場合でも例外が発生する。
-
[解決済み] エラー - Android リソースのリンクに失敗しました (AAPT2 27.0.3 Daemon #0)
-
[解決済み] Gradle DSL メソッドが見つかりません:'compile()'
-
[解決済み] com.android.supportのライブラリは全て全く同じバージョン表記である必要があります。
-
[解決済み] Androidでイメージビューの背景を透明に設定する
-
[解決済み] Android: @drawable/picture を drawable に変換するのに失敗しました。
-
[解決済み] ArrayList<String>をString[]配列に変換する[重複]。