如何将文件写入Android中的外部公共存储,以便从Windows可见?教程

2019-09-11由程序员日记发表于系统教程 浏览25次

我的应用程序应将文件保存到以下位置:当您将手机/平板电脑连接到计算机时,可以通过系统文件资源管理器查看它们.

这是我实现文件写入的方式:

protected String mDir = Environment.DIRECTORY_DOCUMENTS;
protected File mPath = Environment.getExternalStoragePublicDirectory(mDir);

protected void writeLogFile(String filename) {
    File f = new File(mPath, filename + ".txt");
    f.getParentFile().mkdirs();
    try (BufferedWriter bw = new BufferedWriter(new FileWriter(f, false))) {

        // Details omitted.

    } catch (Exception e) {
        e.printStackTrace();
        return;
    }
    makeText("Wrote " + f.getAbsolutePath());
}

这是我将Sony Xperia Z4平板电脑连接到Windows时所看到的(通知缺少文档文件夹):

如何将文件写入Android中的外部公共存储,以便从Windows可见?教程

这是写入文件的目录(使用上面的实现):

如何将文件写入Android中的外部公共存储,以便从Windows可见?教程

我的实施有什么问题?

解决方法:

What is wrong with my implementation?

MediaStore尚未发现您新创建的文件.您在Windows中以及许多设备上“图库”应用程序中看到的内容都基于MediaStore索引的内容.

将数据写入磁盘后,使用MediaScannerConnection及其scanFile()方法告诉M​​ediaStore您的文件:

public void scanFile(Context ctxt, File f, String mimeType) {
    MediaScannerConnection
        .scanFile(ctxt, new String[] {f.getAbsolutePath()},
                  new String[] {mimeType}, null);
}