Android 文件保存在ASUS transformer SD卡上时在windows资源管理器中不可见

Android 文件保存在ASUS transformer SD卡上时在windows资源管理器中不可见,android,windows-7,android-sdcard,Android,Windows 7,Android Sdcard,如果我在ASUS Transformer上运行以下代码,那么“testfile.txt”将按照预期在“sd卡”目录的顶层创建 private void testWriteFile () throws IOException { File sdCard = Environment.getExternalStorageDirectory(); File file = new File(sdCard, "testfile.txt"); FileOutputStream myO

如果我在ASUS Transformer上运行以下代码,那么“testfile.txt”将按照预期在“sd卡”目录的顶层创建

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资源管理器中可见,因此其他应用程序可以使文件在资源管理器中可见

如果我在中兴通讯刀片(Orange San Francisco)上运行相同的代码,那么我可以在Windows资源管理器中看到“testfile.txt”,而无需更改其名称

我还需要做些什么来完成此文件,使其可见吗


此处报告了类似的问题,但在我的案例中,强制关闭不会使文件可见。

我已通过以下说明解决了此问题:

    MediaScannerConnection.scanFile
             (this, new String[] {file.toString()}, null, null);
我不知道为什么华硕和中兴刀片需要这样做。但是,它们与我的电脑的连接方式有所不同,我怀疑这就是原因


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

我已通过以下说明解决了此问题:

    MediaScannerConnection.scanFile
             (this, new String[] {file.toString()}, null, null);
我不知道为什么华硕和中兴刀片需要这样做。但是,它们与我的电脑的连接方式有所不同,我怀疑这就是原因


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

我在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);

谢谢。

我已经在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);

谢谢。

您在哪里拨打MediaScannerConnection电话?关闭文件后?我将MediaScannerConnection调用放在write()之后、flush()和close()之前,这对我也有效!!谢谢!!这似乎与电脑的连接有关……您将MediaScannerConnection呼叫放在哪里?关闭文件后?我将MediaScannerConnection调用放在write()之后、flush()和close()之前,这对我也有效!!谢谢!!这似乎与电脑的连接有关。。。