電話のメモリに何かを書き込もうとしています。
最初に、パスを次のようにハードコーディングしました。
myFile = new File("/sdcard/" + txtName.getText() + ".txt");
これは完全に正常に動作します。
そして、Eclipseは、代わりにそのようなパスをハードコードするべきではないという警告を表示します。次のことを行う必要があります。
myFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/"+ txtName.getText() + ".txt");
次に、修正の提案に従い、警告を回避します。
しかし、ライター クラスで実行時例外が発生しました。
次に、Environment.getExternalStorageDirectory().getAbsolutePath()
デバッグ用に出力します。結果は
/ストレージ/sdcard0
. しかし、以前は完全に正常に機能していたハードコーディングされたものは、実際には
/SDカード
.
なぜこれが起こるのでしょうか?
また、警告を回避したい場合は、パスをハードコーディングするのではなく、より「正式で正しい」方法でパス ディレクトリを取得するにはどうすればよいですか?
PS: 私の電話は HTC One X で、外部 SD カード スロットはありません。32GBのストレージにSDカードが内蔵されているのでしょうから、本質は同じはずです。