Já programo a muito tempo ( uns 10 anos rs ), mas sou iniciante em android, alem de um completo desastre rs.
Estou tentando montar algumas funcoes de comunicacao com FTP com a lib do apache ftp client, mas estou penando, alguem tem algum ex de comunicacao, com conexao, upload e download e poderia me ajudar?
Obrigado!
Veja se ele pode te ajudar, caso tenha duvidas nao exite em postar aqui.
Will_Peixoto
Obrigado, fiz esse, porem nao funcionou, entrei em contato com o thiago, me mandou o cod, mas tambem, não consegui fazer funcionar. no inicio postei aqui e me indicaram utilizar as threds, pois as chamadas estavam direta ( modo ativo ) e por isso sempre acionava uma exception, resolveu a exception, mas ainda nao conecta rs
Segue abaixo um código funcional para baixar arquivos do FTP. Ele está meio esquisito em alguns lugares pois adaptei de um código que eu havia feito. Mas creio que serve como base e vc pode adaptar as suas necessidades. Att.
Edit: Lembrando também de colocar as permissões no manifesto:
<uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.STORAGE"/>publicclassAtualizacaoViewextendsAppCompatActivity{ProgressDialogdialog;booleanisOk=false;booleanbaixouArquivo=false;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_atualizacao_view);}//Botao da tela para simular alguma chamadapublicvoidbtnOnClick(Viewview){isOk=true;chamaThreadFtp();}//Cria nova threadprivatevoidchamaThreadFtp(){dialog=ProgressDialog.show(this,"Titulo","Mensagem....",false,true);dialog.setCancelable(false);newThread(){@Overridepublicvoidrun(){try{conectaFtp();}catch(Exceptione){}}}.start();}privatevoidconectaFtp(){StringstrUrl="192.168.100.1";StringstrPorta="20";intporta=0;try{porta=Integer.parseInt(strPorta);}catch(Exceptione){//Erro na portaisOk=false;}if(isOk){FTPClientcon=null;try{con=newFTPClient();con.connect(strUrl,porta);if(con.login("usuario","senha")){con.enterLocalPassiveMode();con.setFileType(FTP.BINARY_FILE_TYPE);Stringdiretorio="/DiretorioDoFtp/aaaa/bbb/";if(!checkDirectoryExistsAtt(diretorio,con)){//Diretorio nao existeisOk=false;}if(isOk){//Lista os arquivos do diretórioFTPFile[]arquivos=con.listFiles();if(arquivos!=null){intlength=arquivos.length;for(inti=0;i<length;++i){FTPFilef=arquivos[i];if(f.isFile()){StringnomeArquivo=f.getName();//Lista os arquivos do ftpnomeArquivo=nomeArquivo.trim();//Download do arquivobaixaArquivo(con,nomeArquivo);}}}else{//Não há arquivos no diretório}}con.logout();con.disconnect();}else{//Senha-usuário inválido}}catch(Exceptione){//Alguma Exception}}finalizaFtp();}privatevoidbaixaArquivo(FTPClientcon2,StringnomeArquivo){OutputStreamoutputStream=null;try{StringdiretorioAndroid=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/";StringfileName=nomeArquivo;diretorioAndroid+=fileName;finalUriuri=Uri.parse("file://"+diretorioAndroid);Filefile=newFile(diretorioAndroid);//Diretório do arquivo no ftpStringdiretorio2="/DiretorioDoFtp/aaaa/bbb/"+nomeArquivo;outputStream=newBufferedOutputStream(newFileOutputStream(file));//Retorna true ou false se o arquivo foi baixado com sucessobaixouArquivo=con2.retrieveFile(diretorio2,outputStream);}catch(Exceptione){//Alguma exception de download}finally{if(outputStream!=null){try{outputStream.close();}catch(Exceptione){}}}}privatevoidfinalizaFtp(){runOnUiThread(newRunnable(){@Overridepublicvoidrun(){if(dialog!=null){dialog.dismiss();}Toast.makeText(getContext(),"Concluído",Toast.LENGTH_LONG).show();}});}privatebooleancheckDirectoryExistsAtt(StringdirPath,FTPClientftpClient)throwsIOException{booleanretorno=true;try{ftpClient.changeWorkingDirectory(dirPath);intreturnCode=ftpClient.getReplyCode();if(returnCode==550){retorno=false;}}catch(Exceptione){retorno=false;}returnretorno;}privateContextgetContext(){returnthis;}}