Conexão FTP via Android

6 respostas
W

Estou tentando reunir informações para montar uma biblioteca de acesso ( leitura,gravacao e exclusao ) a um FTP via android, utilizando o android studio. reuni algumas informações, estou utilizando a biblioteca do apache org.apache.commons.net.ftp.FTPFile, porem ao seguir os exemplos antigos que encontrei, sempre ao tentar conectar (antes mesmo do usuario e senha ) na linha mFtp.connect(Host); aciona a exception networkonmainthreadexception.

Alguem possui alguma sugestão ou algum exemplo funcional?

obrigado!

6 Respostas

J

Da uma olhada neste link, nele tem uma possível solução para seu problema!

W

Obrigado, no caso seria que o app nao teria permissao para acessar a internet?
fiz a modificação, mas infelizmente ainda nao deu!

G
URL url = new URL(urlToRssFeed);

SAXParserFactory factory = SAXParserFactory.newInstance();

SAXParser parser = factory.newSAXParser();

XMLReader xmlreader = parser.getXMLReader();

RssHandler theRSSHandler = new RssHandler();

xmlreader.setContentHandler(theRSSHandler);

InputSource is = new InputSource(url.openStream());

xmlreader.parse(is);

return theRSSHandler.getFeed();

And it shows the below error:

android.os.NetworkOnMainThreadException

M

Bom dia Will,

Isso provavelmente acontece pois você está tentando acessar o FTP pela thread principal. Tente criar uma nova thread que vai dar certo.

ProgressDialog dialog;

private void novaThread(){
	dialog = ProgressDialog.show(this, "Titulo", "Mensagem",false,true);
	dialog.setCancelable(false);
	new Thread(){
		@Override
		public void run(){
			try{
				conectaFTP();
			}catch (Exception e){}
		}
	}.start();
}

private void conectaFTP(){
	/*Código de acesso ao FTP*/       

	finalizaConexao();
}

private void finalizaConexao(){
        runOnUiThread(new Runnable(){
            @Override
            public void run(){
				if(dialog != null) {
                    dialog.dismiss();
                }
			
				Toast.makeText(getContext(),"Mensagem",Toast.LENGTH_LONG).show();
			
		}
	});
}

private Context getContext(){
        return this;
    }
W

obrigado!
realmente é isso!
peguei um exemplo “funcional” mas estava sem as threds!
ainda estou penando com as funcoes, mas a exception foi resolvida com isso!!!
Obrigado!

M

Bacana! Qualquer dúvida estamos ai.

Att.

Criado 3 de julho de 2017
Ultima resposta 5 de jul. de 2017
Respostas 6
Participantes 4