一些 Ubuntu 13.04 应用程序无法访问 MTP 安装系统上的文件。为什么?

一些 Ubuntu 13.04 应用程序无法访问 MTP 安装系统上的文件。为什么?

Ubuntu 13.04 附带 MTP 支持,可访问较新的 Android 设备上的文件。我的 Nexus 10 工作正常:插入后,我可以使用 Nautilus 访问 N10 文件,并且可以从设备复制文件或将文件复制到设备。Evince 可以直接从设备打开 PDF 文件,但某些应用程序无法直接从设备打开文件,例如 gedit 或 libreoffice。Gedit 会显示以下内容:

Cannot open file mtp://[usb:001,009]/65537/5823/5824

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

我知道 MTP 可以使用 fuse 安装,但如果它能与 Nautilus 的常规应用程序(如 sftp:// 或 smb://)一起使用就更好了。

答案1

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

Nautilus 可以很好地复制文件,但是只要您尝试使用未明确考虑受限操作集的应用程序,就会出现错误。表明是一个支持它的应用程序的示例(它将文件复制到 /tmp 然后打开它)。

这就是 13.04 中发生的情况。

现在,谷歌恰好在 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。

答案2

我无法从 Fujifilm FinePix S1500 中获取照片。错误消息:

Operation not supported by backend

我通过卸载相机并使用 gphoto2 从命令行复制文件解决了这个问题。

相关内容