某些 Ubuntu 13.04 应用程序无法访问 MTP 挂载系统上的文件。为什么?

jjc*_*ico 14 gedit nautilus android mtp 13.04

Ubuntu 13.04 带有 MTP 支持,可以在较新的 Android 设备上访问文件。我的 Nexus 10 工作正常:插入后,我可以使用 Nautilus 访问 N10 文件,我可以从设备复制和复制到设备。Evince 将直接从设备打开 PDF 文件,但某些应用程序无法直接从设备打开文件,如 gedit 或 libreoffice。Gedit 是这样说的:

Cannot open file mtp://[usb:001,009]/65537/5823/5824
Run Code Online (Sandbox Code Playgroud)

我猜 MTP 是在 gvfs 级别集成的,所以不是所有启用 gvfs 的应用程序都应该能够访问 MTP 设备吗?为什么 evince 而不是 gedit?

我知道 MTP 可以安装保险丝,但如果它与 Nautilus 的常规应用程序一起使用,就像 sftp:// 或 smb:// 一样,那就太好了。

lan*_*epl 29

MTP 规范不支持在 Linux 上实现正常文件访问所需的基本打开/读/写/关闭操作——它只提供文件的上传/下载,这就是 MTP 后端实现的。

Nautilus 可以很好地复制文件,但是一旦您尝试使用未明确说明受限操作集的应用程序,您就会收到错误消息。evince是一个支持它的应用程序的例子(它将文件复制到 /tmp 然后打开它)。

所以,这就是 13.04 中发生的事情。

现在,碰巧 Google 在 Android 中实现了一组 MTP 扩展,提供打开/读/写/关闭,并且可以通过这些提供正常的文件访问。我已经在 gvfs 开发分支中完成了这项工作,但它错过了 1.16 发布窗口,所以它最早要到 13.10 才会出现在 Ubuntu 中。14.04 仍然没有

同时,您可以使用我的 ppa 在我向后移植这项工作的地方安装构建。

https://launchpad.net/~langdalepl/+archive/gvfs-mtp

最后,需要注意的是,这些扩展仅存在于 Google 的 MTP 堆栈中。你有一台 Nexus 10,所以它可以在运行 Android 系统时正常工作——但是使用三星设备或其他制造商设备的人不会有这些扩展,并且可能不支持正常的文件 I/O。

  • 我对隐式下载/上传行为从来不满意——这对用户来说可能是一个非常不愉快的惊喜,我不想介绍它。考虑一下,如果您在那里有想要观看的多 GB 电影,那么您双击它,然后它突然开始下载到您的 /tmp,这实际上是一个 tmpfs...或者您想编辑一些文档然后你打开,做一些工作然后保存,但是你的电脑在fs可以上传之前崩溃了,中间文件存储在/tmp中,这是一个tmpfs,所以当你重新启动时它会丢失。不友好! (2认同)