gpt4 book ai didi

java - 如何将文件写入 Android 中的外部公共(public)存储以便它们在 Windows 中可见?

转载 作者:太空狗 更新时间:2023-10-29 22:55:15 26 4
gpt4 key购买 nike

我的应用程序应该将文件保存到一个地方,当您将手机/平板电脑连接到计算机时,您可以通过系统文件资源管理器查看它们。

我是这样写文件的:

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 时看到的内容(注意缺少文档文件夹):

windows file explorer showing tablet contents

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

android device monitor showing file system

我的实现有什么问题?

最佳答案

What is wrong with my implementation?

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

使用 MediaScannerConnection 及其 scanFile() 方法将您的文件告知 MediaStore,一旦您将数据写入磁盘:

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

或者,在 Kotlin 中:

fun scanFile(ctxt: Context, f: File, mimeType: String) {
MediaScannerConnection.scanFile(ctxt, arrayOf(f.getAbsolutePath()), arrayOf(mimeType), null)
}

关于java - 如何将文件写入 Android 中的外部公共(public)存储以便它们在 Windows 中可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32789157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com