0

重複の可能性:
SDCard コンテンツは存在するが表示されない

SD カードが挿入された Linux カーネル (2.6.31) を実行している電話。

[問題] データが SD カードに書き込まれると (write syscall)、書き込みが正常に返されます。ただし、カードが PC の大容量記憶装置として (電話経由で) アクセスされると、データは表示されません。

カードを物理的に取り外して再挿入し、大容量記憶装置として PC にアクセスした後にのみ、書き込まれたデータが表示されます。データを書き込んだ後に fsync() を試しました。それでも表示されません。

データをSDカードに書き込む前に、カーネルはキャッシュを維持していますか? もしそうなら、どうすればそれがSDカードにフラッシュされていることを確認できますか?

[編集] タグMMCを削除

4

1 に答える 1

0

問題は、SDCard コンテンツの正確な複製が存在するが、それらを表示できないことです。PC は、MTP インターフェイスから返されたコンテンツを表示しています。

ファイルを表示するために必要なことを行うスタブ コード:

インポート:

import android.media.MediaScannerConnection;
import android.os.Environment;
import android.util.Log;
import java.io.File;

スタブ コード:

File f = new File(Environment.getExternalStorageDirectory().getPath() + "/hello_nurse.txt");
if (! f.exists()) {
    try {
        f.createNewFile();
        String[] files = new String[1];
        files[0] = Environment.getExternalStorageDirectory().getPath() + "/hello_nurse.txt";
        String[] mimes = new String[1];
        mimes[0] = "text/plain";
        MediaScannerConnection.scanFile(getApplicationContext(), files, mimes, null);
    } catch (Exception ex) {
        Log.e("SD Create", "Failed to create file", ex);
        return;
    }
} else {
    Log.e("SD Create", "File is already present");
}
于 2012-09-05T15:20:14.500 に答える