2012-12-01 5 views
5

私はsdcardのルートフォルダに直接アクセスする必要があるアプリケーションを開発していますが、Android 4.2では標準の/ sdcardディレクトリがユーザー固有の「エミュレートされた」sdcardを指しているようですアプリを実行している。これは、私のアプリは、sdcardの最上位に格納されているファイルへのアクセスを必要とするので、良くありません。誰かがAndroid 4.2でsdcardに直接アクセスする方法を知っていますか?Androidのアクセス/ sdcard 4.2

+0

これは実際のリムーバブルSDカードですか?私が見た4.xデ​​バイスでは、実際にはsdcardは存在せず、内部ストレージボリューム内の1つをエミュレートするだけなので、目標は意味がありません。物理的なカードがある場合は、adbシェルの 'mount'コマンドを使ってどのように処理されているのか見ることができます。 –

+0

あなたは誤解されているようです。バーチャルであっても、/ sdcardパーティションは常に存在します。しかし、4.2アップデートでは、/ sdcardの扱いは全く異なります。 sdcardパーティションにアクセスすると(コード内)、* real */sdcardは表示されなくなり、現在のユーザーに固有のsdcardの仮想的な「パーティション」を指し示します。 私が開発しているアプリは、デバイスに関係なく、4.2より下のAndroidバージョンでうまく動作することに注意してください。 – Drew

+0

Koushik Dutta(ROMマネージャーの開発者)がこの記事を見て、彼は同じ問題について不平を言う。 https://plus.google.com/103583939320326217147/posts/D7mZBjTJj5j – Drew

答えて

2

ストレージディレクトリをファイルタイプとして使用できますか? (java.io.File

もしそうなら、あなたはあなたの方法でこのようなコードを使用して、外部記憶装置(一般的にSDカードを、ないSDカードを使って携帯電話上の主記憶装置になります)を取得することができます

File path = Environment.getExternalStorageDirectory(); 

また、ストレージにアクセスするには、AndroidマニフェストのREAD_EXTERNAL_STORAGE権限が必要です。データが変更された場合は、WRITE_EXTERNAL_STORAGEが必要です。彼らはマニフェストに表示されるようここでは、これらの権限は以下のとおりです。

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

出典:

http://developer.android.com/reference/android/os/Environment.html http://developer.android.com/reference/android/Manifest.permission.html

+0

これは私が現在使っているものですが、Android 4.2では/ sdcard(ExternalStorageDirectory)パーティションの実際のルートではなく、/ sdcard(ExternalStorageDirectory)パーティションの特別なユーザー固有の場所にリダイレクトされるという問題があります。 – Drew

+0

ああ、私はあなたの質問を誤解して申し訳ありませんが表示されます。 – Alex6642122

1

おそらく、私は私のネクサスギャラクシーは、Android 4.2.1を実行すると、しかし、あなたの質問を誤解しています私はEnvironment.getExternalStorageDirectory()を使って私のSDカードにアクセスできます。返されるディレクトリは/storage/emulated/0ですが、内容は/sdcardです。

+0

ストレージに関するドキュメントがありますが、4.4 source.android.com/devices/tech/storage/config-example.htmlとdoubleencore.com/2014/03/android-external-storage – pevik

関連する問題