在USB大容量存储模式下连接时,有时在PC上看不到SD卡数据(通过电话)

时间:2012-09-04 10:56:36

标签: android linux linux-kernel usb

  

可能重复:
  SDCard content exist but cant see them

插入SD卡的手机运行Linux内核(2.6.31)。

[ISSUE]当数据写入SD卡(写入系统调用)时,写入成功返回。但是,当卡(通过电话)作为PC上的大容量存储设备访问时,不会看到数据。

只有在物理移除卡并重新插入卡然后在PC上作为大容量存储设备访问卡时,才会显示已写入的数据。 在写入数据后尝试了fsync()。它仍然不会显示。

内核在将数据写入SD卡之前是否保持缓存?如果是这样,我如何确保将其刷新到SD卡?

[edit]删除了标签MMC

1 个答案:

答案 0 :(得分:0)

您的问题与SDCard content exist but cant see them完全相同 - 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");
}