所以我想从Android设备的文件写入共享文件夹窗口。 我使用JCIFS的最新版本, 代码显示可用的网络共享工作正常。 所以,我认为一切都确定了JCIFS和我的LAN,无线网络等。这里是文件上传的代码(其实我只想写一个文字字串到文件):
public boolean save2Samba(String text, String fileName) {
try {
// My Windows shares doesn't require any login/password
// String name="login";//my windows username
// String password="password1";//my windows password
// sSambaFolder contains a path like MYPC/E/SharedFolderName/
String url = "smb://" + sSambaFolder.toLowerCase()+fileName;
SmbFile file = null;
try {
// assume ANONYMOUS is my case but there is no description of this in JCIFS API
NtlmPasswordAuthentication auth = NtlmPasswordAuthentication.ANONYMOUS;
file = new SmbFile(url, auth);
android.util.Log.i("TestApp",url);
// output is like smb://mypc/e/sharedfoldername/file.txt;
SmbFileOutputStream out = new SmbFileOutputStream(file);
out.write(text.getBytes());
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
由于网址登录我敢肯定,这是正确的(也是我用我上面提到的代码进行核对网址并浏览文件夹的包含)。
但问题是,我总是得到相同的:
W/System.err(3214): jcifs.smb.SmbAuthException: Access is denied.
股份没有密码保护,所以我不需要任何的用户名/密码以访问。 我能读/写/删除另一个WinPC文件,无需授权。 此外,我试图创建WinPC用户密码与股票,但结果是一样的。 所以,我想NtlmPasswordAuthentication的几个版本,没有运气:
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("");
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(":");
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("Administrator:"); //actual username on WinPC with shares
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("Administrator");
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null,"Administrator","");
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null,"","");
所以我在做什么错误,以及如何才达到我的目标时,有没有权威性是需要可以访问共享文件夹?
顺便说一句我的三星电视是基于Linux,并使用Samba客户是没有问题访问相同的共享文件夹,并从那里播放MP3(嗯,是的,它只能读取)。 由于我的AOS装置通过WiFi访问我的LAN(而不是经由以太网连接的TV)我还检查使用笔记本+的WiFi到共享文件夹的访问,没有发现问题。
添加:
现在我试图执行以下行:
file = new SmbFile(url, auth);
android.util.Log.i("save2Samba", "file.exists(): " + file.exists());
并得到同样的访问被拒绝。 我甚至试着写文件...