Java SMB getinputstream应用程序崩溃

Java SMB getinputstream应用程序崩溃,java,android,smb,Java,Android,Smb,我正面临着同样的问题,而这一问题在当时也面临着,但没有得到正确的回答。我正在使用下面的代码 btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { try{ String url = "smb://DHARMU-PC/" + sharedFolder + "/new plugi

我正面临着同样的问题,而这一问题在当时也面临着,但没有得到正确的回答。我正在使用下面的代码

 btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        try{
            String url = "smb://DHARMU-PC/" + sharedFolder + "/new plugin.txt";
            NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null);
            SmbFile sfile = new SmbFile(url,auth);

            if (sfile!=null)
            {

                Toast.makeText(Main2Activity.this,"Not", Toast.LENGTH_SHORT).show();
                sfile.getInputStream();

            }
            else
            {
                Toast.makeText(Main2Activity.this, "Succsess", Toast.LENGTH_SHORT).show();
            }


 } catch (MalformedURLException e) {
                            Toast.makeText(Main2Activity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                        }
                        

                    
                });
当我注释sfile.getInputStream()时应用程序运行完美,但与getinputstream应用程序在try-catch块中没有任何异常。由于上述问题未获答覆,我现再次提出这项质询

编辑

现在我尝试使用异步任务

class CopySMBFile extends AsyncTask<String, String, String> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }
    @Override
    protected String doInBackground(String... f_url) {
        try {
            String fileContent = "This is a test file";
            try{
                String user = "myusername:mypassword";
                System.out.println("User: " + user);

                NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(user);
                String path = "smb://192.168.1.12/k/temp/A.txt";
                System.out.println("Path: " +path);

                SmbFile sFile = new SmbFile(path, auth);
                SmbFileOutputStream sfos = new SmbFileOutputStream(sFile);
                sfos.write(fileContent.getBytes());

                System.out.println("Finished attempt to write file");
            } catch (Exception e) {
                e.printStackTrace();
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.e("Connected", e.getMessage());
        }

        return null;
    }
类CopySMBFile扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(字符串…f_url){
试一试{
String fileContent=“这是一个测试文件”;
试一试{
String user=“myusername:mypassword”;
System.out.println(“用户:“+User”);
NtlmPasswordAuthentication auth=新的NtlmPasswordAuthentication(用户);
字符串路径=”smb://192.168.1.12/k/temp/A.txt";
System.out.println(“路径:+Path”);
SmbFile sFile=新SmbFile(路径,身份验证);
SmbFileOutputStream sfos=新的SmbFileOutputStream(sFile);
write(fileContent.getBytes());
System.out.println(“完成写入文件的尝试”);
}捕获(例外e){
e、 printStackTrace();
}
}捕获(例外e){
e、 printStackTrace();
Log.e(“已连接”,e.getMessage());
}
返回null;
}
现在使用异步任务,SmbFileOutputStream正在工作,但getinputstream仍显示致命错误

编辑


发现Appcrash背后的原因是networkmainthread异常。现在请指导解决它。

我认为
NtlmPasswordAuthentication
调用是错误的。它希望字符串是
host;user:password
。在您的情况下,应该是
192.168.1.12;myusername:mypassword
。您还可以使用3个参数构造函数的r版本:
NtlmPasswordAuthentication(“192.168.1.12”、“myusername”、“mypassword”)

“Android smb getinputstream应用程序崩溃”--使用LogCat检查与崩溃相关的Java堆栈跟踪:可能重复您是否尝试关闭流?我只是好奇…
sfile.getinputstream().close();