1

Java を使用して SD カードから単純なテキスト ファイルを読み込もうとしていますが、開くことができないようです。Ubuntu 12.04 で Eclipse for Mobile Developers を使用しています。onCreate()メイン アクティビティのメソッド内のコードは次のとおりです。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String status = "Hello, is it me you're looking for?";
    String storageState = Environment.getExternalStorageState();

    File dir = Environment.getExternalStorageDirectory();
    File f = new File(dir, "textTest.txt");

    if (f.exists()) {
        status = "File is found!";
    } else {
        status = "File is not found!";
    }

    this.text1 = (TextView) findViewById(R.id.textView1);
    text1.setText(status.subSequence(0, status.length()));
}

また、ここに私が試したいくつかのコンストラクターがありますがFile f、どれも機能しませんでした:

File f = new File(dir, "textTest.txt");
File f = new File("/sdcard/textTest.txt");
File f = new File(dir, "mnt/sdcard/textTest.txt");

最後に、上記の文字列を使用して外部ストレージの状態を確認したstorageStateところ、返された値Environment.getExternalStorageState()mounted. 私が持っている唯一の手がかりは、SDカードが読み取れるかどうかに関係があるのではないかと思いますが、それは単なる推測です. 何か案は?

追加: ご存じないかもしれませんが、アクティビティを起動すると、TextViewオブジェクトに「ファイルが見つかりません! 」と表示されます。

追加 2: わかりました。うまくいったことを試してみました。USB経由で電話を接続すると、電話に関連する2つのフォルダーが開きます.1つは内部ストレージ(データ、DCIMなど)のすべてのフォルダーを含み、1つはSDカードに接続されていると想定するフォルダーです。ラップトップ カード リーダーからファイルを追加し、電話に入力しました。ただし、ファイル「testText.txt」を最初のフォルダー(内部ストレージに関連していると想定)にコピーすると、コンストラクターFile f = new File("/sdcard/textTest.txt");が機能します。どうして?

4

1 に答える 1

0

コメントに基づいて..

これをAndroidManifest.xml に追加します

android.permission.READ_EXTERNAL_STORAGE

また、WRITE操作で何かをする場合は、この許可を追加してください

android.permission.WRITE_EXTERNAL_STORAGE
于 2013-03-06T21:27:17.887 に答える