Início > Android > Envio de arquivo FTP usando Android

Envio de arquivo FTP usando Android

Enviar um arquivo FTP utilizando Android

Neste post, vou demonstrar como enviar um arquivo via FTP (File Transfer Protocol) utilizando Android na versão 2.2 (API  8 ) e configurar o ambiente de desenvolvimento. A aplicação exibirá uma tela para informar login e senha, na mesma tela será exibida como resposta do arquivo FTP uma mensagem de sucesso ou falha.

Ambiente de desenvolvimento

Para desenvolver um projeto no Android existem diversas IDEs, por exemplo:

•    MotoDev – Ferramenta para desenvolvedores Android criada pela Motorola.

http://developer.motorola.com/docstools/motodevstudio/download/

•    Eclipse 3.4 Ganymede – Plugin no eclipse para o Android

o   https://dl-ssl.google.com/android/eclipse/

•    Eclipse 3.5 Galileo – Plugin no eclipse para o Android.

o    https://dl-ssl.google.com/android/eclipse/

Configurar Ambiente de Desenvolvimento

Para se trabalhar com Android, é preciso ter em sua máquina instalada a SDK do android, JDK do Java e o diretório da pasta tools da SDK do Android no Path da variável de ambiente do SO.

Download do SDK(Andriod)
http://developer.android.com/sdk/index.html

Download do JDK (Java)
http://www.oracle.com/technetwork/java/javase/downloads/index.html

Configuração de variável de ambiente

Para configurar a variável de ambiente, no meu caso que estou utilizando o Windows 7, eu faço da seguinte maneira: tecla Windows + pause break – Configurações avançadas do sistema – Na aba avanço, vou em variáveis de ambiente – Na caixa abrirá uma tela com o nome Variáveis de Sistema – procure por uma variável já criado chamada de Path, nela adiciono o diretório tools da SDK do Android que no meu caso é: C:\android-sdk-windows\tools. Com essa variável configurada, você será capaz de utilizar o prompt de comandos para trabalhar com o Android.

No MotoDev ou no Eclipse, é preciso indicar o caminho de onde foi instalada a sua SDK do Android. Vá em: Windows – Preferences – Android – SDK Location – Neste campo, você seta o caminho de instalação que no meu caso foi: C:\android-sdk-windows. Nesta tela também, você configura a versão do Android que você irá trabalhar

Criando o projeto no eclipse

Para criar um projeto no MotoDev é simples, vá em: File – New –  Android Project .Project name – É definido o nome do projeto. Build Target – É definida a versão do Android que será utilizada no projeto. Applicantion name – É definido o nome do projeto. Packge Name – nome do pacote do projeto. Create Activity – É definido o nome da Activity. Min SDK Version – Versão que o projeto deve rodar.

Build target – GoogleAPIs 2.2
Project name –  ProjetoAndroid
Application name –   SendFile
Package name – com.br.projeto
Create Activity – EnviarArquivo
Min SDK version – 8

Configurar BuildPath

Para trabalharmos com envido de arquivo FTP vamos utilizar a API Net da Jakarta Commons. O download pode ser feito nesse endereço:

http://commons.apache.org/net/download_net.cgi
Feito o download, é preciso adicionar o arquivo commons-net-2.0.jar (Versão mais atual neste momento) no CLASSPATH da sua aplicação. Para adicionar no CLASSPATH do projeto no Eclipse ou no MotoDev, vá em: Clique com o direto em cima do projeto SendFTP – Build Path – Configure Build Path – Libraries – Add External JARs .

Criando XML para tela de envio de arquivo FTP

É possível criar uma tela no Android utilizando uma classe que herde de Activity ou criando um XML. Optei por criar a tela utilizando XML pelo motivo de ter código de negócio separado de código de view. Então vamos lá. Existe um XML criado automaticamente pelo MotoDev ou pelo  Eclipse quando é criado um projeto.O nome desse arquivo é main.xml, que se localiza em: Res/layout/main.xml . Vamos editar este XML para criar nossa tela. Nele, existe uma TAG chamada de TextView que está sendo utilizada para exibir uma mensagem na tela “Hello World, EnviarArquivo!”

<TextView
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="@string/hello"
 />

Abaixo dessa TAG, vamos criar TextView, EditText e um Button para fazer o envio do arquivo ao servidor FTP.

EditText serve para inserir um valor. É possível recuperar o valor inserido no editText através de uma activity utilizando a classe R do projeto.

EditText loginEdit = (EditText) findViewById(R.id.login);


<EditText android:id="@+id/login" android:layout_width="wrap_content"</pre>
android:layout_height="wrap_content"android:textSize="18sp"
 android:layout_x="88px" android:layout_y="53px">
</EditText>

TextView serve para exibir uma texo definido pelo atributo android:text.


<TextView android:id="@+id/senhaText" android:layout_width="wrap_content"
 android:layout_height="wrap_content" android:text="Senha"
 android:layout_x="24px" android:layout_y="135px">
</TextView>

Button é criado através da TAG <button>. No atributo android:text é definido o nome do botão.


<Button android:id="@+id/enviarFTP" android:layout_width="wrap_content"
 android:layout_height="wrap_content" android:text="Button"
 android:layout_x="15px" android:layout_y="214px">
</Button>

Código do main.xml completo:

</pre>
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout android:id="@+id/widget0"
 android:layout_width="fill_parent" android:layout_height="fill_parent"
 xmlns:android="http://schemas.android.com/apk/res/android">

 <TextView android:id="@+id/loginText" android:layout_width="wrap_content"
 android:layout_height="wrap_content" android:text="Login"
 android:layout_x="24px" android:layout_y="71px">
 </TextView>

 <TextView android:id="@+id/senhaText" android:layout_width="wrap_content"
 android:layout_height="wrap_content" android:text="Senha"
 android:layout_x="24px" android:layout_y="135px">
 </TextView>

 <EditText android:id="@+id/login" android:layout_width="wrap_content"
 android:layout_height="wrap_content" android:text="" android:textSize="18sp"
 android:layout_x="88px" android:layout_y="53px">
 </EditText>

 <EditText android:id="@+id/senha" android:layout_width="wrap_content"
 android:layout_height="wrap_content" android:text="" android:textSize="18sp"
 android:password="true" android:layout_x="90px" android:layout_y="120px">
 </EditText>

 <TextView android:id="@+id/notificacao" android:layout_width="wrap_content"
 android:layout_height="wrap_content" android:visibility="invisible"
 android:text="TextView" android:layout_x="114px" android:layout_y="200px">
 </TextView>

 <Button android:id="@+id/enviarFTP" android:layout_width="wrap_content"
 android:layout_height="wrap_content" android:text="Button"
 android:layout_x="15px" android:layout_y="214px">
 </Button>

</AbsoluteLayout>

Enviando Arquivos

Na Activity que foi criada EnviarArquivo.java, vamos criar o envido do arquivo. A activiry implementa as interfaces OnclickListener e Runnable. Para a interface OnclickListener, é preciso ter o método onclick(View v) na activity EnviarArquivo.java para executar a ação do botão que foi criado no XML . E a interface Runnable é utilizada para criar um novo Thread. É preciso ter o método run() na activity enviarArquivo.java.

No método onCreate, é nele que se pega a referência do botão que foi definido como enviarFTP e seta o onclickListener de “b” passando this (EnviarArquivo.java)como parâmetro.

@Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 Button b = (Button) findViewById(R.id.enviarFTP);
 b.setOnClickListener(this);
}

O ProgressDialog cria uma tela de progresso para o envio do arquivo FTP. No método onclick, é feito a criação da tela de progresso para o envio do arquivo e cria um novo thread para executar o envio do arquivo.

@Override
 public void onClick(View v) {

dialog = ProgressDialog.show(this, "Exemplo",
"Enviando arquivo, por favor, aguarde...”, false, true);

 // Faz o envio do arquivo FTP.
 new Thread(this).start();

 }

Na execução do método run, é obtido o valor de login, senha e convertendo os mesmo para um valor String. Dentro do sdCard virtual do emulador ou do seu dispositivo, é necessário que você insira um arquivo teste.zip para que nosso app funcione. Nesta variável notificação, é obtido a referência do textView notificação criado no main.xml. É também chamado o método post de handler para exibir a mensagem de erro ou de sucesso e da visibilidade ao textView. Dentro do try é chamado o método envioFTP passando como parâmetro login,senha,diretório, nome do arquivo e extensão. Dentro de finally é chamado o método dismiss para finalizar o ProgressDialog.

@Override
 public void run() {

 EditText loginEdit = (EditText) findViewById(R.id.login);
 EditText senhaEdit = (EditText) findViewById(R.id.senha);

 String login = loginEdit.getText().toString();
 String senha = senhaEdit.getText().toString();
 String diretorio = "/sdcard/teste.zip";
 String nomeArquivo = "teste.zip";

 final TextView notificacao = (TextView) findViewById(R.id.notificacao);

 try {

 envioFTP(login, senha, diretorio, nomeArquivo+”.zip”);

 handler.post(new Runnable() {

 public void run() {
 notificacao.setText("Arquivo enviado com sucesso.");
 notificacao.setVisibility(View.VISIBLE);
 }
 });

 } finally {
 dialog.dismiss();
 }

Por último, o método envoFTP cria um objeto do tipo FTPCliente, faz a conexão com o servidor FTP através do método connect(domínio,porta), executa o login com o método login, passando o login e senha, instancia um objeto do tipo FileInputStream para recuperar o arquivo, passando como parâmetro o diretório do arquivo.Seta o setFileTransferModel e setFileType como BINARY_FILE_TYPE indicando que o arquivo a ser transferido é do tipo binário. E realiza o envio através do método storeFile, passando como parâmetro o nome do arquivo e o arquivo a ser enviado.

private void envioFTP(String login, String senha, String diretorio,
 String nomeArquivo) {

 FTPClient ftp = new FTPClient();

 try {

 ftp.connect("192.168.10.162", 21);
 ftp.login(login, senha);
 FileInputStream arqEnviar = new FileInputStream(diretorio);
 ftp.setFileTransferMode(ftp.BINARY_FILE_TYPE);
 ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
 ftp.storeFile(nomeArquivo, arqEnviar);
 ftp.logout();
 ftp.disconnect();

 } catch (SocketException e) {
 e.printStackTrace();
 } catch (IOException e) {
 e.printStackTrace();
 } catch (Exception e) {

 e.printStackTrace();
 }

 }

Código completo abaixo:

</pre>
package com.br;

import java.io.FileInputStream;
 import java.io.IOException;
 import java.net.SocketException;

import org.apache.commons.net.ftp.FTPClient;

import com.br.R.id;

import android.app.Activity;
 import android.app.ProgressDialog;
 import android.os.Bundle;
 import android.os.Handler;
 import android.util.Log;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.TextView;

public class EnviarArquivoFTP extends Activity implements OnClickListener,
 Runnable {

private ProgressDialog dialog;
 private Handler handler = new Handler();

@Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 Button b = (Button) findViewById(R.id.enviarFTP);
 b.setOnClickListener(this);
 }

@Override
 public void onClick(View v) {

dialog = ProgressDialog.show(this, "Exemplo",
 "Enviando arquivo, por favor aguarde...", false, true);

// Faz o envio do arquivo FTP.
 new Thread(this).start();
 }

@Override
 public void run() {

EditText loginEdit = (EditText) findViewById(R.id.login);
 EditText senhaEdit = (EditText) findViewById(R.id.senha);

String login = loginEdit.getText().toString();
 String senha = senhaEdit.getText().toString();
 String diretorio = "/sdcard/teste.zip";
 String nomeArquivo = "teste.zip";

final TextView notificacao = (TextView) findViewById(R.id.notificacao);

try {

envioFTP("root", "taxaselic", diretorio, nomeArquivo);

handler.post(new Runnable() {

public void run() {
 notificacao.setText("Arquivo enviado com sucesso");
 notificacao.setVisibility(View.VISIBLE);
 }
 });

} finally {
 dialog.dismiss();
 }
 }

/**
 * Faz o envio do arquivo .zip via FTP.
 *
 * @param login
 * @param senha
 * @param diretorio
 * @param nomeArquivo
 */
 private void envioFTP(String login, String senha, String diretorio,
 String nomeArquivo) {

FTPClient ftp = new FTPClient();

try {

ftp.connect("192.168.10.162", 21);
 ftp.login(login, senha);
 FileInputStream arqEnviar = new FileInputStream(diretorio);
 ftp.setFileTransferMode(ftp.BINARY_FILE_TYPE);
 ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
 ftp.storeFile(nomeArquivo, arqEnviar);
 ftp.logout();
 ftp.disconnect();

} catch (SocketException e) {
 e.printStackTrace();
 } catch (IOException e) {
 e.printStackTrace();
 } catch (Exception e) {

e.printStackTrace();
 }

}

}

Anúncios
  1. Jefferson Padua
    novembro 19, 2010 às 4:08 pm

    Boa tarde Douglas!

    Cara vê se você pode me ajudar.

    Na linha em que eu coloco o numero do meu servidor ftp.
    “ftp.connect(“numeroServidor”, 21);”
    Quando o executo a aplicação Android ele da “Permission denied.”

    Porém eu criei uma aplicação Java pura no eclipse, e quando a executo funciona normalmente (consigo acessar o servidor e listar os arquivos que estão em uma determinada pasta).

    Você já viu isso acontecer alguma vez?
    Tem idéia do que possa ser?

    Obrigado,

    Jefferson

    • novembro 19, 2010 às 4:36 pm

      Acho que você esqueceu de declarar a permissão no AndroidManifest.xml

      <uses-permission android:name="android.permission.INTERNET" />
      

      Essa permissão é usada para fazer uso da internet no seu aplicativo.

      • Jefferson Padua
        novembro 22, 2010 às 1:17 pm

        Muito Obrigado Douglas.

        Realmente eu não tinha declarado essa permissão no AndroidManifest.xml.

        Valeu,

        Jefferson

  2. diego
    fevereiro 2, 2011 às 9:28 am

    Ola

    como crio esta pasta sdcard? ou como envio o arquivo para lah?
    tenho como enviar de outra pasta?

    eu estou usando apenas o emulador

    • fevereiro 2, 2011 às 12:23 pm

      Grande Diego,

      O diretório sdcard é o diretório raiz dos cartões de memórias de dispositivos (celulares) que rodam com Android. O emulador, também tem esse diretório sdcard que é o diretório padrão do cartão de memória virtual do emulador. Também é possível fazer o download de um arquivo via FTP e jogar em qualquer diretorio, por exemplo:

      /sdcard/outra_pasta/pasta/arquivo.txt

      Lembrando que o diretório raiz é sdcard.

  3. diego
    fevereiro 4, 2011 às 7:24 pm

    Não encontrei o diretorio sdcard,
    apenas um arquivo *.img com o nome de sdcard.

    estou usando windows, isso interfere?

    • fevereiro 4, 2011 às 8:00 pm

      Tentar utilizar assim,
      File diretorio= new File(“/sdcard/pasta/aquivo.apk”);

      Nesse link abaixo, tem um exemplo onde eu baixo um arquivo .apk que está dentro do sdcard e instaldo no dispositivo. É um exemplo super básico, lá tem como encontrar um arquivo dentro do sdcard.

      http://www.4shared.com/file/w7-BfYiA/installapp.html

      Enquanto vocês esta programando em um ambiente linux ou windows, não faz diferença. O caminho seria /sdcard/pasta/nome_do_arquivo

  4. Vinicius
    março 23, 2011 às 7:07 pm

    Boa tarde, Douglas.

    Estou com um problema que não consegui listar os arquivos do FTP, já conferi a permissão, problema com o amigo acima, mesmo assim não consigo listar os arquivos. Quando executo um http://ftp.listNames() não me retorna nada, mas a pasta tem vários arquivos, o mesmo código funciona no java puro.

    Tem alguma ídeia?

    Obrigado

    • março 24, 2011 às 3:21 am

      Pow, se vc diz que em um projeto java normal funciona… provavelmente é pra funcionar. Tem como tu postar o codigo que tu faz a criação do file ? tenta ver se você esqueceu de instanciar o objeto file no diretório correto. Tipo,

      File a = new File("d:/");
      • Vinicius
        março 26, 2011 às 2:30 pm

        Douglas, bom dia.

        Consegui fazer funcionar através do celular, pelo emulador que não estava conseguindo…

        Valeus… Até mais…

  5. charles
    março 27, 2011 às 12:04 am

    ola… tem como eu exportar/importar arquivos do android diretamente para o pc sem usar o ftp?
    Obrigado desde ja….

    • março 27, 2011 às 2:20 pm

      É provável que com a api File você consiga transportar arquivos do dispositivo (celular) para o computador e do computador para o dispositivo (celular). Para que você consiga fazer essas transferências desses arquivos o sdcard tem que estar montado.

  6. Fabiano Almeida
    janeiro 11, 2012 às 9:53 am

    Bom dia Douglas,

    Primeiramente parabéns pela iniciativa em ajudar publicando seus códigos.

    Estou tentando fazer o download de um determinado arquivo para a minha pasta files do meu projeto.

    O download ele faz, o problema é que ele está vindo vazio.

    Testei com arquivos txt e xml.

    Você consegue me dar uma força?

    Segue o link com meu código

    http://www.guj.com.br/java/262539–arquivo-xml-baixado-via-ftp-vindo-vazio—android#1372200

    Grande abraço.

    • Fabiano Almeida
      janeiro 11, 2012 às 10:41 am

      Douglas,

      Acabei de conseguir.

      Apenas alterei o nome: http://ftp.meuftp.com.br pelo IP e funcionou perfeitamente.

      Grande abraço.

  7. janeiro 25, 2012 às 12:21 pm

    Olá Douglas, acabei de fazer esse tutorial, e o mesmo não da erro nenhum, mas tb não coloca o arquivo no FTP indicado, da pra Imaginar o que é? 🙂 coloquei um http://ftp.getStatus() para tentar ver o que ta se passando, mas esse da NULL… o que será q pode ser?

    • janeiro 25, 2012 às 12:28 pm

      Não esta transferindo o arquivo ou o arquivo esta sendo transferido mas sem conteúdo ?

      • janeiro 27, 2012 às 10:56 am

        Transefrindo sem conteúdo, já troquei para IP, refiz o tutorial e ainda não obtive sucesso… alguma ideia?

      • janeiro 27, 2012 às 12:30 pm

        Da uma olhada no tipo de constate que tu pode usar aqui


        // Seta o modo de transferência
        ftp.setFileTransferMode(ftp.BINARY_FILE_TYPE);

        // Seta o tipo do arquivo a ser transferido.
        ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

  8. lucasddaniel
    junho 6, 2012 às 8:44 pm

    amigo, muito bom esse post viu!
    Gostaria muito de conhecer pessoas assim como vc com grandes conhecimentos!
    Soube que vc fez uma app que atualizava automaticamente sem ajuda do market(google play)!
    Vc poderia postar, acho que a comunidade iria gostar 😀

    • junho 7, 2012 às 1:15 am

      Kkkkk magaiver, um Deus da programação! Muito boa a dica do poso!!!

  9. Lucas P. Rosseti
    julho 17, 2012 às 2:56 pm

    estou com um problema de classe quando tento instanciar um objeto FTPClient
    FTPClient ftp = new FTPClient();

    recebo a resposta
    07-17 14:41:28.292: E/AndroidRuntime(273): java.lang.NoClassDefFoundError: org.apache.commons.net.ftp.FTPClient

    o que etou fazendo de errado?
    A unica diferça no meu codigo é o endereço do server FTP mas é algumas linhas abaixo então acredito que esse não seja o problema.

    • julho 17, 2012 às 3:56 pm

      Você tem que adicionar a biblioteca de FTP no projeto. Segue esse passo:

      Configurar BuildPath

      Para trabalharmos com envido de arquivo FTP vamos utilizar a API Net da Jakarta Commons. O download pode ser feito nesse endereço:

      http://commons.apache.org/net/download_net.cgi
      Feito o download, é preciso adicionar o arquivo commons-net-2.0.jar (Versão mais atual neste momento) no CLASSPATH da sua aplicação. Para adicionar no CLASSPATH do projeto no Eclipse ou no MotoDev, vá em: Clique com o direto em cima do projeto SendFTP – Build Path – Configure Build Path – Libraries – Add External JARs .

  10. Lucas P. Rosseti
    julho 17, 2012 às 5:05 pm

    Ola Douglas! Desculpe o encomodo mas ainda não funcionou, re montei todo o projeto e fiz novamente a inclusão do JAR mas segue com o mesmo erro.

    07-17 17:00:35.191: E/AndroidRuntime(272): java.lang.NoClassDefFoundError: org.apache.commons.net.ftp.FTPClient
    07-17 17:00:35.191: E/AndroidRuntime(272): at com.br.projeto.EnviarArquivo.envioFTP(EnviarArquivo.java:50)
    07-17 17:00:35.191: E/AndroidRuntime(272): at com.br.projeto.EnviarArquivo.run(EnviarArquivo.java:98)
    07-17 17:00:35.191: E/AndroidRuntime(272): at java.lang.Thread.run(Thread.java:1096)

    Sera que eu estou salvando o JAR no local errado

    C:\Program Files\Android\android-sdk\commons-net-2.0
    C:\eclipse\plugins\org.apache.ant_1.8.2.v20120109-1030\lib

    Tenho os arquivos salvos nessas duas pastas e ja tentei lincar com as duas mas segue o mesmo erro, eu tenho que fazer alguma coisa alem de descompactar os arquivos?

    Grato por sua atenção

    • julho 17, 2012 às 5:34 pm

      Lucas, tu jogos os jar’s na pasta errada. Você tem que jogar os jar’s na pasta do projeto no eclipse. Faz o seguinte, dentro do teu projeto no eclipse, cria uma pasta chamada libs e dentro dela adiciona os jar’s. Feito isso, clica com o direito no jar e vai na opção add build path

  11. Lucas P. Rosseti
    julho 17, 2012 às 7:23 pm

    Fiz o que você falou mas deu um erro diferente (o que já é um avanço) o erro agora é quando mando rodar…

    java.lang.IllegalArgumentException: already added: Lorg/apache/commons/net/DatagramSocketClient;
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.dx.command.dexer.Main.processClass(Main.java:486)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.dx.command.dexer.Main.processFileBytes(Main.java:455)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.dx.command.dexer.Main.access$400(Main.java:67)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:394)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.dx.command.dexer.Main.processOne(Main.java:418)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.dx.command.dexer.Main.run(Main.java:206)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at java.lang.reflect.Method.invoke(Unknown Source)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:180)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:702)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:646)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:321)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:396)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at org.eclipse.core.internal.resources.Project$1.run(Project.java:618)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at org.eclipse.core.internal.resources.Project.build(Project.java:124)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.ide.eclipse.adt.internal.project.ProjectHelper.doFullIncrementalDebugBuild(ProjectHelper.java:978)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:147)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:854)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:703)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:937)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1141)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
    [2012-07-17 16:20:21 – ProjetoAndroid] Dx 1 error; aborting
    [2012-07-17 16:20:21 – ProjetoAndroid] Conversion to Dalvik format failed with error 1

    sera que fiz o download da biblioteca errada?

  12. julho 17, 2012 às 9:07 pm

    Mostra o teu código pra eu ver como tá!

  13. setembro 14, 2012 às 5:43 pm

    Douglas fiz o tutorial mas o Banco Sqlite q eu estou enviando ele fica vazio no ftp, ja testei todos os tipos de constate do nosso amigo Rodrigo, mas sem sucesso. Tem algum dica pra mim ver se consigo.

    • setembro 14, 2012 às 6:10 pm

      Sidney, tenta da uma olhada nesse link aqui e ver se alguma constante dessa se encaixa no tipo de dados que tu está transferindo. Faz outros testes também com outros arquivos, tipo… tenta enviar uma foto, um arquivo txt etc. Qualquer coisa estamos ai 😛

  14. Neto
    maio 18, 2013 às 1:45 pm

    Boa Tarde Douglas, segui o tutorial mas infelizmente a aplicação nao corre no emulador, apos aparecer a mensagem do dialog, aparece uma mensagem de erro dizendo: “Unfortunatelly sendFile has stopped” sabe a q se deve este erro??da para me ajudar sff??

  15. novembro 11, 2014 às 3:09 pm

    Boa tarde Douglas!

    Estou algumas semanas quebrando cabeça para receber o arquivo.txt, segui o seu tutorial para criar a aplicação, ela roda normalmente.
    Copiei uma pasta(teste) dentro do sdcard do celular e coloquei 2 arquivos(teste.txt e teste.zip), criei tb 2 servidores p testar receber os arquivos(Um via site hospedeiro “Hostinger” e outro no próprio windows7), sendo que até agora não consegui receber o arquivo no servidor, a aplicação aparece a msg de “Arquivo enviado com sucesso”, mas não recebo nada. Teria alguma dica relacionado a esse problema?? Muito grato pelo post?

    • novembro 11, 2014 às 4:14 pm

      Cara, tenta pegar o projeto exemplo e faz apenas a configuração do teu servidor FTP e veja se funciona… Estranho o arquivo não chegar.

  16. novembro 12, 2014 às 12:18 pm

    Tudo certo agora, estava direcionando o diretório errado, em vez de colocar no cartão sd coloquei o arquivo na memória interna do cell e também alterei…

    envioFTP(“root”, “taxaselic”, diretorio, nomeArquivo);

    por

    envioFTP(login, senha, diretorio, nomeArquivo);

    Abraços!!

  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: