【问题标题】:How can I implement of updating file on the server (file cloud) using SAF?如何使用 SAF 在服务器(文件云)上更新文件?
【发布时间】:2016-01-19 18:52:14
【问题描述】:

我的移动云应用程序从远程服务器获取所有内容,它应该使用存储访问框架http://developer.android.com/guide/topics/providers/document-provider.html 并实现 DocumentsProvider http://developer.android.com/reference/android/provider/DocumentsProvider.html 以显示在支持的应用程序列表中的第三方应用程序(如 Microsoft Office)中SAF 打开或保存。从 SAF 应用程序打开文件并在第三方应用程序(例如 Microsoft Office)中对其进行修改后,该文件应在服务器上被覆盖,但我在 SAF 框架中找不到相应的方法。

现在我看到了实现这一点的唯一方法:

  1. 在应用文件夹或 sdcard 上的临时位置下载文件
    DocumentsProvider.openDocument()
  2. 设置这个文件的文件观察者(FileObserver)
  3. 捕获 CLOSE_WRITE 事件并尝试将修改后的文件发送到服务器
  4. 如果出现任何网络错误或应用程序已重新启动 - 将有关此文件的信息存储在应用程序数据库中以便稍后发送此文件。

你能提供更简单的方法来达到预期的效果吗?或者,也许您在我的方法中看到了一些错误。类似的功能已经在 Dropbox 应用中实现。谢谢!

【问题讨论】:

    标签: android cloud saf


    【解决方案1】:

    openDocument() 返回一个ParcelFileDescriptor,如果您使用ParcelFileDescriptor.open(File, int, Handler, OnCloseListener),那么您将收到一个对OnCloseListeneronClose() 的回调——此时,您知道外部应用程序已完成文件,您可以开始同步操作。

    // A file representing the local copy of the file
    File file = ...;
    return ParcelFileDescriptor.open(
        file,
        ParcelFileDescriptor.parseMode(mode),
        new Handler(), // use the current thread
        onCloseListener);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-15
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多