私はアンドロイドデバイスからWindows共有フォルダにファイルを書き込もうとしています。私はJCIFSの最新バージョンを使用しており、code which displays available network sharesが問題なく動作します。Samba/JCIFSの問題を使ってファイルを書き込み/アップロードする(SmbAuthException:アクセスが拒否されている)
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;
}
}
URLが記録されているので:だから私はここでは、ファイルのアップロードのためのコードは、(実際に私は、ファイルにテキストSringを書きたい)であるすべてのものがJCIFSとOKと私のLAN、無線LANなどであると仮定します私はそれが正しいことを確信しています(また、私は上記のコードを使用してURLをチェックし、フォルダを含むブラウズ)。
しかし、問題Imは常に同じになっている:
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,"","");
だから何を私が間違ってやっているとどのように何の認証がないときに私の目標をachiveするかは、共有フォルダへのアクセスを得るために必要とされますか?
BTW私のサムスンTVは、Linuxベースで、Sambaクライアントを使用していますが、問題なく同じ共有フォルダにアクセスしています。そこからMP3を再生しています。私のAOSデバイスはWiFi(Ethernet経由で接続されているテレビの代わりに)経由で私のLANにアクセスしているので、ノートブック+ WiFiを使って共有フォルダへのアクセスもチェックしても何の問題も見つからなかった。
を追加しました:
file = new SmbFile(url, auth);
android.util.Log.i("save2Samba", "file.exists(): " + file.exists());
をし、拒否された同じアクセス権を取得:
私は、次の行を実行するために、今しようとしています。私も...ファイルの書き込みに
これが機能するには、Windows上でゲストアカウントを有効にする必要があります。 –
私の場合はWinXPだったので、これを動作させるためにゲストアカウントをアクティブにする必要はありません(今は2回チェックしていました)。 Win7に関してはおそらくそうです。 Win7は、ネットワーキングについて話すとチューニングが非常に難しくなりました。主な理由は、XPと比べて好きではないという主な理由です。 – Stan