
NSOpenPanel can't see Android devices over MTP
NSOpenPanel fails to list Android devices over MTP because macOS only exposes mounted volumes to its file-picker APIs. Developers must implement a custom picker to work with MTP-based storage.
NSOpenPanel cannot enumerate Android devices connected via MTP on macOS, as reported by hiyoyo in a May 31, 2026 Dev.to post [DevTo]. The dialog only displays paths that the Finder has mounted as volumes, and macOS never mounts MTP devices as a traditional filesystem [Apple Docs]. When building the HiyokoMTP client, the author discovered that the native folder picker—NSOpenPanel, and its sibling NSSavePanel—return an empty list for any MTP path. macOS’s file-system APIs assume storage appears as a block-device volume; MTP, by contrast, is a stateful USB protocol that presents an object tree rather than a mountable filesystem [Apple Docs]. Android File Transfer once created a virtual mount using a kernel extension, but that approach was deprecated due to reliability and security concerns [DevTo].
The limitation forces developers to write custom UI code or accept manual path entry, adding engineering overhead and fragmenting the user experience across macOS tools. Many Rust-based or Electron-based file managers assume NSOpenPanel will surface all attached storage. The limitation forces each project to re-implement MTP browsing logic, slowing adoption of new macOS utilities that need to interact with Android devices [DevTo]. By tying file-picker APIs to mount points, macOS effectively blocks any protocol that does not map to a filesystem, such as SMB-direct, WebDAV, or emerging USB-based media protocols [Apple Docs].
Developers are left with few options: they can either build their own custom MTP picker from scratch, use a third-party library like libmtp with its own UI, or wait for Apple to add a protocol-agnostic file picker. Until such an API arrives, macOS developers will have to build their own pickers or live with manual path entry, creating a maintenance burden and a fragmented user experience [DevTo].
Subscribe to the broadcast.
Daily digest of the day's most important tech news. No fluff. Engineering signal only.
// delivered via substack · double-opt-in confirmation


