47

4.2.2 を実行している Samsung Galaxy Nexus の SD カードにファイルを保存しようとしています。使用しているアプリから

Environment.getExternalStorageDirectory()

しかし、それは戻ります

/storage/emulated/0/

私のSDカード情報がある場所ではありません。SDカードへの正しいパスを取得するために使用できる作業方法はありますか?

4

7 に答える 7

15

実際、それが正しい位置です。

Android 4.2 以降、Google は複数のユーザー アカウントを導入しました。すべてのユーザーには独自の外部ストレージがあり、一意性を維持するためにパスにユーザー ID が含まれています。

プライマリ (デフォルト) ユーザーの ID は 0 です。したがって/storage/emulated/0/、外部ストレージへのパスとして取得します。

于 2013-03-19T13:53:48.417 に答える
10

I just learned this is the Jelly Bean's way of dealing with the lack of android.permission.WRITE_EXTERNAL_STORAGE permission. I haven't seen such a behavior with older versions of Android.

Just add this line to your AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
于 2013-09-29T18:20:15.103 に答える
5

Environment.getExternalStorageDirectory()デバイスの製造元が「外部ストレージ」と見なしたものを指します。私はSDカード以外のものになることができます。

詳細については、こちらを参照してください:外付け SD カードの場所を探す

于 2013-03-19T13:53:40.407 に答える
1

genymotionエミュレーターを使用しているためだと思います。パスはtrueで、Eclipseでは次の場所にあります

File Explorer - > mnt - > shell - > emulated -> 0 

それが役に立てば幸い ;)

于 2014-08-10T07:40:53.180 に答える
0

/storage/emulated/0 のシンボリック リンクが何らかの形で失われ、同様の障害が発生しました。私がやったのは、カメラアプリを使って写真を撮ることでした。ファイル エクスプローラーからはそのディレクトリが存在しませんでしたが、写真の詳細には /storage/emulated/0 内にあることがわかりました。次に、電話を再起動しました。再起動後、リンクは存在していました。

于 2014-09-09T23:46:48.300 に答える
0

もちろん?SDカードはどこにマウントされていると思いますか?そのディレクトリで実行してみてください。ls -lおそらく へのシンボリック リンク/storage/emulated/0/です。

于 2013-03-19T13:54:05.477 に答える
-1

getExternalFilesDir()またはを使用してみてくださいgetExternalStoragePublicDirectory()

Android 4.2 のドキュメントから

于 2013-03-19T13:54:25.893 に答える