有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从安卓保存csv。共享时文件未命名

我正在安卓 studio中使用java开发一个应用程序,它读取csv文件,并最终将该文件导出。输出的csv文件被命名为Untitled.csv,但是我希望它保持在程序中读取的原始文件名。有办法做到这一点吗?请看下面我的代码:

Uri path = Uri.parse(mypath);
Intent fileIntent = new Intent(Intent.ACTION_SEND);
fileIntent.setType("text/csv");
fileIntent.putExtra(Intent.EXTRA_SUBJECT, "Data");
fileIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
fileIntent.putExtra(Intent.EXTRA_STREAM, path);
startActivity(Intent.createChooser(fileIntent, "Send data"));

其中“mypath”是“0/模拟的/安卓/data/some_文件夹/backup_文件_20191217”。csv'

2019年12月20日更新:我刚刚注意到,在某些设备上,该文件的名称与实际文件名一致,但在某些设备上,它被导出为未命名。我不知道为什么会这样。 如果有人知道这件事,我请求你帮助我

更新日期:2019年12月22日:当我与其他应用程序共享时,我正确获取了文件名,但当我使用whatsapp共享时,文件名没有标题。问题是我的代码?还是whatsapp


共 (1) 个答案

  1. # 1 楼答案

    您可以尝试使用ACTION_SENDTO。这允许您提供实际的文件URI,该URI可能被解释为文件,而不是二进制流(应保留文件名):

    Uri path = Uri.parse(mypath);
    Intent fileIntent = new Intent(Intent.ACTION_SENDTO);
    fileIntent.setData(path);
    fileIntent.setType("text/csv");
    fileIntent.putExtra(Intent.EXTRA_SUBJECT, "Data");
    fileIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    startActivity(Intent.createChooser(fileIntent, "Send data"));
    

    实际上,如果只在fileIntent.setType()行之前添加fileIntent.setData(),它可能也适用于现有代码(使用ACTION_SEND)。这一切都取决于进行共享的应用程序的行为(即:不是你的应用程序)