保存在ASUS变压器SD卡上时,文件在Windows资源管理器中不可见

时间:2011-12-17 14:00:48

标签: android windows-7 android-sdcard

如果我在ASUS Transformer上运行以下代码,则会按预期在'sd card'目录的顶层创建'testfile.txt'。

private void testWriteFile () throws IOException
{
    File sdCard = Environment.getExternalStorageDirectory();
    File file = new File(sdCard, "testfile.txt");

    FileOutputStream myOutput = new FileOutputStream(file);
    byte buffer[] = {'0','1','2','3','4','5','6','7','8','9'};      

    myOutput.write(buffer,0,buffer.length);

    myOutput.flush();
    myOutput.close();
}

我可以使用文件管理器应用程序查看ASUS Transformer上的文件。我可以通过'adb shell'命令从Windows dos框中看到该文件,并且其权限似乎已正确设置。但是,如果我从Windows资源管理器中查看该目录,则“testfile.txt”不存在。我已经设置了显示隐藏文件和系统文件的选项,但没有运气。

如果我使用ASUS文件管理器应用更改'testfile.txt'的名称,那么它在Windows资源管理器中可见,因此其他应用程序可以在资源管理器中显示文件。

如果我在ZTE Blade(Orange San Francisco)上运行相同的代码,那么我可以在Windows资源管理器中看到'testfile.txt'而无需更改其名称。

我需要做些什么来完成这个文件才能看到它?

此处报告了类似的问题,Can't see a file in Windows written by an android app on sd-card unless I "Force Close" the app,但在我的情况下强行关闭并不会使文件可见。

2 个答案:

答案 0 :(得分:5)

我已按照以下说明解决了这个问题:

    MediaScannerConnection.scanFile
             (this, new String[] {file.toString()}, null, null);

我不确定为什么华硕需要这个,而不是中兴通讯刀片。但是,他们连接到我的电脑的方式有所不同,我怀疑这就是原因。

中兴通讯刀片显示为USB大容量存储设备,并分配了一个驱动器号。华硕作为便携式媒体播放器(MTP)出现,并没有分配驱动器号。

答案 1 :(得分:0)

我在android5.x上有这个工作:

File sdcard = Environment.getExternalStorageDirectory();
//step 1.
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, 
              Uri.parse("file://" + sdcard)));

//step 2.
MediaScannerConnection.scanFile(getApplicationContext(), 
        new String[]{sdcard.getAbsolutePath() 
        + "/screenshots/myscreen_" + IMAGES_PRODUCED + ".png"}, null, null);

感谢。