【问题标题】:How to share a CSV file on Android Pie?如何在 Android Pie 上共享 CSV 文件?
【发布时间】:2019-05-29 09:47:33
【问题描述】:

Android Pie,我想将我的 CSV 文件分享到任何共享应用程序,例如蓝牙或电子邮件等...它在较低版本中运行,但在 9.0 中不会

  final String test = "content://" + Environment.getExternalStorageDirectory() 
                                   + "/Download" + "/" + "ProgressivePayment.csv";
  Intent sharingIntent = new Intent();
  sharingIntent.setAction(Intent.ACTION_SEND);
  sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(test));
  sharingIntent.setType("text/csv");
  startActivity(Intent.createChooser(sharingIntent, "share file with"));

【问题讨论】:

  • 它在 Android Pie 中如何不起作用?它会抛出任何Exception 还是根本不打开共享视图?
  • 它将打开共享视图但它不会读取文件但如果在较低版本上它将读取并发送
  • logcat 中是否有任何警告或错误?
  • fileuriexposedexception-file-storage-emulated-0-test-txt-exposed

标签: java android


【解决方案1】:

它在较低版本中运行

可能有一些编写不佳的应用程序错误地处理了EXTRA_STREAM,并意外处理了损坏的Uri。或者,as Martin Zeitler points out,也许设备上预装了一个奇怪的ContentProvider,恰好可以纪念你损坏的Uri。大多数设备上的大多数应用程序在尝试使用 Uri 时都会崩溃,因为没有匹配的 ContentProvider

你可以use FileProvider正确地创建一个content Uri 来提供一些你控制的文件。

【讨论】:

  • 如果没有FileProvider,它可能只会抱怨Uri被泄露超出了应用程序的范围(最近遇到了这个问题,只能确认建议)。
  • @MartinZeitler:我希望它会因查找权限字符串失败而崩溃。不要求有 ContentProviderstorage 知道如何处理其余部分的权限。
猜你喜欢
  • 1970-01-01
  • 2022-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
相关资源
最近更新 更多