【问题标题】:Java, Codename One: Exporting and -most importantly- importing files between usersJava,代号一:在用户之间导出和 - 最重要的是 - 导入文件
【发布时间】:2021-08-14 03:59:45
【问题描述】:

问题出在这里:我的应用会生成一些文件,我想给用户机会在他们之间交换这些文件。

这需要 3 个步骤:

  1. 保存数据:在存储中轻松完成 Externalizable 类所需的功能;
  2. 共享数据:完成(现在可能无法检查 结果是正确的,因为缺少步骤 3) 与共享 框架提供的方法,只要我明白我需要 用作 mimetype “application/octect-stream”;
  3. 正在导入下载的数据(由其他用户共享):我无法做到这一点 想办法让它工作。从应用的存储中加载文件 很容易,但是从应用程序的存储中访问文件夹是 我无法做到的事情。

我使用 FileSystemStorage 希望至少能够访问(大部分)每部手机都有的下载文件夹,但显然我无法完成任务

以Android上的FileSystemStorage为例,我可以访问

  • /storage/emulated/0
  • /storage/emulated/legacy
  • file:///system

前两个与应用的存储有关。

加入 file:/// 我获得了一个长长的文件夹列表,其中的部分列表包括

  • 媒体
  • 日志
  • SD卡
  • 可移动
  • ...
  • ...

但是当我尝试访问其中一些时,它们似乎都是空的。要么我犯了一些错误,要么应用程序看不到他们的内容。

所以我想知道是否有办法完成任务,即访问用户下载的文件(可能在下载文件夹中),然后导入它们。

【问题讨论】:

    标签: java codenameone storage-file-share


    【解决方案1】:

    手机应用在手机中是孤立存在的。 Android 从字面上为每个应用程序创建了一个单独的 Linux 用户,这样他们就不会互相踩踏并损坏手机。 iOS 也有类似的技巧。

    因此,应用程序不能只写一个文件来下载,也不能只列出那里的所有文件。这将侵犯用户的隐私。因此,共享文件的本机 API 通常与文件 API 是分开的。我们在CN 类中确实有一个共享 API,它允许您将图像等共享到任意操作系统应用程序。请参阅isNativeShareSupportedshare

    【讨论】:

    • 我会检查一下,如果我用来共享文件的方法不起作用。但是将其他人共享的内容导入 Storage 的应用程序是否有用?我的意思是:userX 共享一个文件; userY 可以使用那里的方法将它导入到 userY 自己的应用程序的存储中吗?
    • 是的,您还可以在设备上的两个独立应用程序之间传递参数。
    【解决方案2】:

    好的,也许我找到了一个解决方案,可以从 CodenameOne 扩展名为 FileChooser 的 Download 文件夹中读取文件。

    根据this blog post,它应该允许在其他人之间访问下载文件夹(至少在 Android 中)。

    我要试一试,当一切准备就绪并经过测试后,编辑此回复,说明它对我的效果。

    【讨论】:

      猜你喜欢
      • 2022-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-02
      • 2019-05-01
      • 2014-11-15
      相关资源
      最近更新 更多