android - 使用 ACTION_CREATE_DOCUMENT 创建 CSV 文件
问题描述
我正在尝试使用 ACTION_CREATE_DOCUMENT 意图创建一个专门为 .csv 文件类型的文件。这是我目前拥有的代码:
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TITLE, ".csv");
startActivityForResult(intent, myRequestCode);
这是我的 onActivityResult 的代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent dataIntent) {
super.onActivityResult(requestCode, resultCode, dataIntent);
// TODO: make the requestCode a global variable
if (resultCode == RESULT_OK && dataIntent != null ) {
if (requestCode == 0) { // user clicked "Database CSV"
try {
if(! dataIntent.getData().getPath().endsWith(".csv")) {
}
OutputStream outputStream = getContentResolver().openOutputStream(dataIntent.getData());
myDb.export_toDatabaseCSV_withOutputStream(outputStream);
Toast.makeText(getApplicationContext(), "Successfully exported.", Toast.LENGTH_LONG).show(); // TODO: make this an actual check based on the result of myDb.export
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "File could not be created.", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
}
}
从 dataIntent.getData().getPath() = "/document/primary:Download/myFileName" 返回的 Uri 路径。我似乎找不到在 if 语句中编辑文件名的方法。
EXTRA_TITLE 具有与我想要的类似的功能,但不是我所需要的。我希望用户能够在活动中指定文件名,而不必将 .csv 添加到文件名的末尾。例如,如果用户创建了一个名为“MyData”的文件,当活动结束时,我希望将该文件重命名为“MyData.csv”。
解决方案
使用这个,它应该工作
intent.setType("text/comma-separated-values")
如果可能,请与我们分享您使用过的此功能 myDb.export_toDatabaseCSV_withOutputStream(outputStream);
推荐阅读
- python - 带有“选择”的 BokehAPP 用于更改未显示其中一个图的图
- flutter - 使用 GestureDetector 的 onLongPressStart 每秒调整图标大小
- visual-foxpro - 如何检查项目/.exe 文件
- html - 如何实现标题和摄影师信用
- sas - 如何在 SAS 中对 Excel 文件进行不同的格式设置,例如粗体、斜体等?
- c# - 如何在紧凑模式下使用 MediaPlayerElement 移动窗口
- typescript - 如何指定排除已知继承索引键的类索引签名?
- python - 为什么我的 matplotlib.pyplot.hist 没有合并我的数据
- php - 我可以使用 C++ 开发 PDO 扩展吗?
- c - 为什么这不能生成所有可能的子集?