You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用无法访问树莓派无密码Samba共享目录问题排查

解决Qt6.4.3 Android应用无法访问Samba共享目录的问题

核心原因

Qt的QDir类在Android平台上不原生支持SMB(Samba)协议的网络共享访问。Windows平台能正常工作是因为系统本身内置了SMB客户端支持//主机名/共享路径的格式解析,但Android系统底层没有这个能力,第三方文件管理器是通过内置SMB客户端实现的访问。

解决方案

1. 使用专门的SMB客户端库替代QDir

你需要集成支持Android平台的SMB客户端库来访问共享目录,推荐使用基于libsmbclient封装的Qt绑定库,或者Qt生态中的第三方SMB组件。

以下是使用QtSMB库的示例代码(需先引入该库):

#include <QSmbClient>
#include <QSmbFile>

// 初始化SMB客户端
QSmbClient client;
// 连接匿名共享(无需用户名密码)
QSmbUrl url("smb://RASPBERRYPI/public/pic");
QSmbFile smbDir(url);

if (smbDir.exists()) {
    // 列出目录下的png文件
    QStringList files = smbDir.entryList(QStringList() << "*.png", QDir::Files | QDir::NoSymLinks);
    int remote_count = files.count();
    // 执行文件复制等操作
} else {
    qDebug() << "共享目录不存在或无法访问";
}

2. 确认Android权限配置

虽然你已添加基础权限,但需确保:

  • INTERNET权限已正确配置(Android 13及以上属于正常权限,安装时自动授予)
  • 已配置ACCESS_NETWORK_STATE权限(你已添加,用于检测网络连接状态)

3. 验证Samba匿名访问配置

确认树莓派的Samba配置文件(通常为/etc/samba/smb.conf)中,共享目录的配置允许匿名访问,关键配置项示例:

[public]
    path = /path/to/your/shared/folder
    public = yes
    writable = yes
    guest ok = yes
    guest only = yes
    create mask = 0644
    directory mask = 0755

4. 改用IP地址替代主机名

Android平台的局域网DNS解析可能存在不稳定情况,尝试将共享路径中的主机名RASPBERRYPI替换为树莓派的局域网IP地址,比如smb://192.168.1.100/public/pic,减少解析失败的概率。

内容的提问来源于stack exchange,提问作者palador

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 13:32:42