通过ftp发送照片

时间:2014-11-10 11:55:38

标签: java android ftp photos

我正在开发一个系统来执行机器维护,我需要发送一些照片。当用户在不关闭或退出活动的情况下提交照片时,发送成功完成。当用户离开活动时,不会发送返回照片,请输入以下日志:

java.lang.NullPointerException
Rejecting registerization due to +iget-object-quick v7, v9, (#8)
at java.io.File.fixSlashes(File.java:185)
at java.io.File.<init>(File.java:134)
at java.io.FileInputStream.<init>(FileInputStream.java:105)
at br.com.tetsistemas.rcbmanutencoes01.ManutencaoConclusaoActivity.envioFTP(ManutencaoConclusaoActivity.java:600)
at br.com.tetsistemas.rcbmanutencoes01.ManutencaoConclusaoActivity.run(ManutencaoConclusaoActivity.java:549)
at java.lang.Thread.run(Thread.java:856)

遵循活动代码:

//发送其中一张照片的脚本

helper.getFoto_plataforma2().setOnClickListener(new OnClickListener() { 
            @Override
            public void onClick(View v) {



                    nomeArquivoPlataforma2 = "Foto_Plataforma2_" + hora_final + ".jpg";

                    localPlataforma2 = STORAGE_SERVICE + "/extSdCard/"
                            + "/RCBManutencoes/" + nomeArquivoPlataforma2 + ".jpg";     


                File arquivo = new File(localPlataforma2);
                //URI que informa onde o arquivo resultado deve ser salvo
                Uri localFoto = Uri.fromFile(arquivo);

                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, localFoto);
                startActivityForResult(intent, TAKE_PLATAFORMA2);

            }
        });


protected void onActivityResult(int requestCode, int resultCode, 
            Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        //Verificacao do resultado da nossa requisicao
        if (requestCode == TAKE_PLATAFORMA) {
            if (resultCode == Activity.RESULT_OK) {
                helper.carregarFotoPlataforma(this.localPlataforma);
            } else {
                localPlataforma = null;
            }
        }


@Override
    public void run() {

        String diretorioPlataforma = localPlataforma;
        String diretorioPlataforma2 = localPlataforma2;
        String diretorioHorimetro = localHorimetro;
        String diretorioProblema = localProblema;
        String diretorioProblema2 = localProblema2;
        String diretorioCausa = localPlataforma;
        String diretorioCausa2 = localPlataforma2;

        String nomeArqPlataforma = nomeArquivoPlataforma;
        String nomeArqPlataforma2 = nomeArquivoPlataforma2;
        String nomeArqHorimetro = nomeArquivoHorimetro;
        String nomeArqProblema = nomeArquivoProblema;
        String nomeArqProblema2 = nomeArquivoProblema2;
        String nomeArqCausa = nomeArquivoCausa;
        String nomeArqCausa2 = nomeArquivoCausa2;

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

    try {

        envioFTP("login", "senha", diretorioPlataforma, diretorioPlataforma2, diretorioHorimetro, 
                diretorioProblema, diretorioProblema2, diretorioCausa, diretorioCausa2,
                nomeArqPlataforma, nomeArqPlataforma2, nomeArqHorimetro, nomeArqProblema, nomeArqProblema2, nomeArqCausa, nomeArqCausa2);

        handler.post(new Runnable() {

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

    } finally {
        dialog.dismiss();
        }
    }

    private void envioFTP(String login, String senha, String diretorioPlataforma, String diretorioPlataforma2,
    String diretorioHorimetro, String diretorioProblema, String diretorioProblema2, String diretorioCausa, String diretorioCausa2, 
    String nomeArqPlataforma, String nomeArqPlataforma2, String nomeArqHorimetro, String nomeArqProblema, String nomeArqProblema2, 
    String nomeArqCausa, String nomeArqCausa2) {

        FTPClient ftp = new FTPClient();

        try {

            ftp.connect("url do ftp", 21);
            ftp.login(login, senha);
            ftp.changeWorkingDirectory("MANUTENCOES");  

            FileInputStream arqEnviarPlataforma = new FileInputStream(diretorioPlataforma);
            FileInputStream arqEnviarPlataforma2 = new FileInputStream(diretorioPlataforma2);
            FileInputStream arqEnviarHorimetro = new FileInputStream(diretorioHorimetro);
            FileInputStream arqEnviarProblema = new FileInputStream(diretorioProblema);
            FileInputStream arqEnviarProblema2 = new FileInputStream(diretorioProblema2);
            FileInputStream arqEnviarCausa = new FileInputStream(diretorioCausa);
            FileInputStream arqEnviarCausa2 = new FileInputStream(diretorioCausa2);

            ftp.setFileTransferMode(FTP.BINARY_FILE_TYPE);
            ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

            ftp.storeFile(nomeArqPlataforma, arqEnviarPlataforma);
            ftp.storeFile(nomeArqPlataforma2, arqEnviarPlataforma2);
            ftp.storeFile(nomeArqHorimetro, arqEnviarHorimetro);
            ftp.storeFile(nomeArqProblema, arqEnviarProblema);
            ftp.storeFile(nomeArqProblema2, arqEnviarProblema2);
            ftp.storeFile(nomeArqCausa, arqEnviarCausa);
            ftp.storeFile(nomeArqCausa2, arqEnviarCausa2);

            ftp.logout();
            ftp.disconnect();

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

            e.printStackTrace();
        }

    }

2 个答案:

答案 0 :(得分:0)

如果用户直接发送到服务器然后运行此代码,则应指定条件:

        FileInputStream arqEnviarPlataforma = new FileInputStream(diretorioPlataforma);
        FileInputStream arqEnviarPlataforma2 = new FileInputStream(diretorioPlataforma2);
        FileInputStream arqEnviarHorimetro = new FileInputStream(diretorioHorimetro);
        FileInputStream arqEnviarProblema = new FileInputStream(diretorioProblema);
        FileInputStream arqEnviarProblema2 = new FileInputStream(diretorioProblema2);
        FileInputStream arqEnviarCausa = new FileInputStream(diretorioCausa);
        FileInputStream arqEnviarCausa2 = new FileInputStream(diretorioCausa2);

否则,如果用户在本地保存并决定稍后发送,则应指定一些条件!!在你的代码中,上述行被调用两个条件,这就是为什么你得到空指针异常,你应该指定一个单独的逻辑来发送你在本地保存的信息。
PS:我注意到你还没有关闭InputStreams !!
你应该关闭finally块

中的所有InputStream对象
finally{
arqEnviarHorimetro.close();
// close all others
}

在没有看到整个代码的情况下,这只是一个疯狂的假设,因为你在第二种情况下得到了NullPointerException。

答案 1 :(得分:0)

是的,你是对的,但是本地保存的逻辑是不一样的,它遵循这个类的所有代码:

package br.com.tetsistemas.rcbmanutencoes01;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.SocketException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

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

import br.com.tetsistemas.rcbmanutencoes01.helper.ManutencaoHelper;
import br.com.tetsistemas.rcbmanutencoes01.modelo.bean.Manutencao;
import br.com.tetsistemas.rcbmanutencoes01.modelo.dao.ManutencaoDAO;
import br.com.tetsistemas.rcbmanutencoes1.R;
import br.com.tetsistemas.rcbmanutencoes01.sincronizar.JdbcConnection;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.StrictMode;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

@SuppressLint("SimpleDateFormat")
public class ManutencaoConclusaoActivity extends Activity implements Runnable{

    private ManutencaoHelper helper;
    static int TAKE_PLATAFORMA = 1;
    static int TAKE_PLATAFORMA2 = 2;
    static int TAKE_HORIMETRO = 3;
    static int TAKE_PROBLEMA = 4;
    static int TAKE_PROBLEMA2 = 5;
    static int TAKE_CAUSA = 6;
    static int TAKE_CAUSA2 = 7;
    private static final String TAG = null;

    private String localPlataforma;
    private String localPlataforma2;
    private String localHorimetro;
    private String localProblema;
    private String localProblema2;
    private String localCausa;
    private String localCausa2;

    private Manutencao manutencaoParaSerAlterada = null;

    Bitmap foto_plataforma;
    Bitmap foto_plataforma2;
    Bitmap foto_horimetro;
    Bitmap foto_problema;
    Bitmap foto_problema2;
    Bitmap foto_causa;
    Bitmap foto_causa2;

    private ProgressDialog dialog;
    private Handler handler = new Handler();
    private Button btFTP;
    private Button btConcluir;
    private Spinner spRetorno;
    private String[] arRetorno = new String[]{"Sim", "Não"};

    private String nomeArquivoPlataforma;
    private String nomeArquivoPlataforma2;
    private String nomeArquivoHorimetro;
    private String nomeArquivoProblema;
    private String nomeArquivoProblema2;
    private String nomeArquivoCausa;
    private String nomeArquivoCausa2;

    private EditText edHoraFinal;
    String hora_final;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_conclusao);

        helper = new ManutencaoHelper(this);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, arRetorno);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spRetorno = (Spinner) findViewById(R.id.spPlataformaRetorno);
        spRetorno.setAdapter(adapter);

        if (savedInstanceState != null) {
            localPlataforma = (String) savedInstanceState.getSerializable("localArquivo");
        }
        if (localPlataforma != null) {
            helper.carregarFotoPlataforma(localPlataforma);
        }

        if(getIntent().getStringExtra("cliente")!=null){
            String horimetro = getIntent().getStringExtra("cliente");
            EditText edCliente = (EditText) findViewById(R.id.edCliente);
            edCliente.setText(horimetro);
        }   

        if(getIntent().getStringExtra("plataforma")!=null){
            String horimetro = getIntent().getStringExtra("plataforma");
            EditText EdPlataforma = (EditText) findViewById(R.id.edPlataforma);
            EdPlataforma.setText(horimetro);
        }

        if(getIntent().getStringExtra("horimetro")!=null){
            String horimetro = getIntent().getStringExtra("horimetro");
            EditText edHorimetro = (EditText) findViewById(R.id.edPlataformaHorimetro);
            edHorimetro.setText(horimetro);
        }   

        if(getIntent().getStringExtra("descricao_problema")!=null){
            String descricao_problema = getIntent().getStringExtra("descricao_problema");
            EditText edDescricaoProblema = (EditText) findViewById(R.id.edPlataformaDescricaoProblema);
            edDescricaoProblema.setText(descricao_problema);
        }   

        if(getIntent().getStringExtra("causa_problema")!=null){
            String causa_problema = getIntent().getStringExtra("causa_problema");
            EditText edCausaProblema = (EditText) findViewById(R.id.edPlataformaCausaProblema);
            edCausaProblema.setText(causa_problema);
        }

        if(getIntent().getStringExtra("descricao_peca")!=null){
            String descricao_peca = getIntent().getStringExtra("descricao_peca");
            EditText edDescricaoPeca = (EditText) findViewById(R.id.edPlataformaDescricaoPeca);
            edDescricaoPeca.setText(descricao_peca);
        }   

        if(getIntent().getStringExtra("numero_peca")!=null){
            String numero_peca = getIntent().getStringExtra("numero_peca");
            EditText edNumeroPeca = (EditText) findViewById(R.id.edPlataformaNumeroPeca);
            edNumeroPeca.setText(numero_peca);
        }   

        if(getIntent().getStringExtra("quantidade")!=null){
            String quantidade = getIntent().getStringExtra("quantidade");
            EditText edQuantidade = (EditText) findViewById(R.id.edPlataformaQuantidade);
            edQuantidade.setText(quantidade);
        }   

        if(getIntent().getStringExtra("tipo")!=null){
            String tipo = getIntent().getStringExtra("tipo");
            EditText edTipo = (EditText) findViewById(R.id.edPlataformaTipo);
            edTipo.setText(tipo);
        }   

        if(getIntent().getStringExtra("retorno")!=null){
            String retorno = getIntent().getStringExtra("retorno");
            EditText edRetorno = (EditText) findViewById(R.id.edPlataformaRetorno);
            edRetorno.setText(retorno);
        }   

        if(getIntent().getStringExtra("tecnico")!=null){
            String tecnico = getIntent().getStringExtra("tecnico");
            EditText edTecnico = (EditText) findViewById(R.id.edPlataformaTecnico);
            edTecnico.setText(tecnico);
        }   

        if(getIntent().getStringExtra("hora_final")!=null){
            hora_final = getIntent().getStringExtra("hora_final");
            edHoraFinal = (EditText) findViewById(R.id.edHoraFinal);
            edHoraFinal.setText(hora_final);
        }

        helper.getFoto_plataforma().setOnClickListener(new OnClickListener() {  
            @Override
            public void onClick(View v) {


                    nomeArquivoPlataforma = "Foto_Plataforma_" + hora_final + ".jpg";

                    localPlataforma = STORAGE_SERVICE + "/extSdCard/"
                            + "/RCBManutencoes/Foto_Plataforma_" + hora_final + ".jpg";


                File arquivo = new File(localPlataforma);
                //URI que informa onde o arquivo resultado deve ser salvo
                Uri localFoto = Uri.fromFile(arquivo);

                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, localFoto);
                startActivityForResult(intent, TAKE_PLATAFORMA);
            }
        });

        helper.getFoto_plataforma2().setOnClickListener(new OnClickListener() { 
            @Override
            public void onClick(View v) {



                    nomeArquivoPlataforma2 = "Foto_Plataforma2_" + hora_final + ".jpg";

                    localPlataforma2 = STORAGE_SERVICE + "/extSdCard/"
                            + "/RCBManutencoes/" + nomeArquivoPlataforma2 + ".jpg";     


                File arquivo = new File(localPlataforma2);
                //URI que informa onde o arquivo resultado deve ser salvo
                Uri localFoto = Uri.fromFile(arquivo);

                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, localFoto);
                startActivityForResult(intent, TAKE_PLATAFORMA2);

            }
        });

        helper.getFoto_horimetro().setOnClickListener(new OnClickListener() {   
            @Override
            public void onClick(View v) {

                    nomeArquivoHorimetro = "Foto_Horimetro_" + hora_final + ".jpg";

                    localHorimetro = STORAGE_SERVICE + "/extSdCard/"
                            + "/RCBManutencoes/Foto_Horimetro_" + hora_final + ".jpg";      


                File arquivo = new File(localHorimetro);
                //URI que informa onde o arquivo resultado deve ser salvo
                Uri localFoto = Uri.fromFile(arquivo);

                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, localFoto);
                startActivityForResult(intent, TAKE_HORIMETRO);

            }
        });

        helper.getFoto_problema().setOnClickListener(new OnClickListener() {    

            @Override
            public void onClick(View v) {



                    nomeArquivoProblema = "Foto_Problema_" + hora_final + ".jpg";

                    localProblema = STORAGE_SERVICE + "/extSdCard/"
                            + "/RCBManutencoes/Foto_Problema_" + hora_final + ".jpg";


                File arquivo = new File(localProblema);
                //URI que informa onde o arquivo resultado deve ser salvo
                Uri localFoto = Uri.fromFile(arquivo);

                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, localFoto);
                startActivityForResult(intent, TAKE_PROBLEMA);

            }
        });

        helper.getFoto_problema2().setOnClickListener(new OnClickListener() {   

            @Override
            public void onClick(View v) {


                    nomeArquivoProblema2 = "Foto_Problema2_" + hora_final + ".jpg";

                    localProblema2 = STORAGE_SERVICE + "/extSdCard/"
                            + "/RCBManutencoes/Foto_Problema2_" + hora_final + ".jpg";      


                File arquivo = new File(localProblema2);
                //URI que informa onde o arquivo resultado deve ser salvo
                Uri localFoto = Uri.fromFile(arquivo);

                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, localFoto);
                startActivityForResult(intent, TAKE_PROBLEMA2);

            }
        });

        helper.getFoto_causa().setOnClickListener(new OnClickListener() {   

            @Override
            public void onClick(View v) {


                    nomeArquivoCausa = "Foto_CausaProblema_" + hora_final + ".jpg";

                    localCausa = STORAGE_SERVICE + "/extSdCard/"
                            + "/RCBManutencoes/Foto_CausaProblema_" + hora_final + ".jpg";


                File arquivo = new File(localCausa);
                //URI que informa onde o arquivo resultado deve ser salvo
                Uri localFoto = Uri.fromFile(arquivo);

                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, localFoto);
                startActivityForResult(intent, TAKE_CAUSA);

            }
        });

        helper.getFoto_causa2().setOnClickListener(new OnClickListener() {  

            @Override
            public void onClick(View v) {


                    nomeArquivoCausa2 = "Foto_CausaProblema2_" + hora_final + ".jpg";

                    localCausa2 = STORAGE_SERVICE + "/extSdCard/"
                            + "/RCBManutencoes/Foto_CausaProblema2_" + hora_final + ".jpg";



                File arquivo = new File(localCausa2);
                //URI que informa onde o arquivo resultado deve ser salvo
                Uri localFoto = Uri.fromFile(arquivo);

                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, localFoto);
                startActivityForResult(intent, TAKE_CAUSA2);

            }
        });



        manutencaoParaSerAlterada = (Manutencao) getIntent().getSerializableExtra(
                "MANUTENCAO_SELECIONADA");

        if (manutencaoParaSerAlterada != null) {
            // Atualiza a tela com dados da manutencao
            helper.setManutencao(manutencaoParaSerAlterada);


        }

        btConcluir = (Button) findViewById(R.id.sbSalvar);
        btConcluir.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                // Utilizacao do Helper para recuperar dados da Manutencao
                Manutencao manutencao = helper.getManutencao();

                // Criacao do objeto DAO - inicio da conexao com o BD
                ManutencaoDAO dao = new ManutencaoDAO(ManutencaoConclusaoActivity.this);

                // Verificacao para salvar ou cadastrar a manutencao
                if (manutencao.getId() == null) {
                    dao.cadastrar(manutencao);
                } else {
                    dao.alterar(manutencao);
                }
                // Encerramento da conexao com o Banco de Dados
                dao.close();
                // Encerrando a Activity
                finish();
            }
        });

        btFTP = (Button) findViewById(R.id.sbFTP);
        btFTP.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                dialog = ProgressDialog.show(ManutencaoConclusaoActivity.this, "Conectando com o servidor ", "Enviando arquivo, por favor, aguarde...", false, true);
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
                StrictMode.setThreadPolicy(policy);
                 Connection connection = null;

                    PreparedStatement preparedStatement = null;

                    connection = JdbcConnection.getConnection();
                    /*String query = "INSERT INTO ManutencaoTablet ( "
                            + "id, developer, empresa, inativo) VALUES"
                            + "(?,?,?,?)";*/
                    String query = "INSERT INTO ManutencaoTablet ( "
                            + "cliente, maquina, horimetro, descricao_problema, causa_problema, "
                            + "descricao_peca, numero_peca, quantidade, tipo, retorno, tecnico, hora_final)"
                            + "VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";

                    try {
                        preparedStatement = connection.prepareStatement(query);

                        preparedStatement.setString(1, helper.getManutencao().getCliente());
                        preparedStatement.setString(2, helper.getManutencao().getMaquina());
                        preparedStatement.setString(3, helper.getManutencao().getHorimetro());
                        preparedStatement.setString(4, helper.getManutencao().getDescricao_problema());
                        preparedStatement.setString(5, helper.getManutencao().getCausa_problema());
                        preparedStatement.setString(6, helper.getManutencao().getDescricao_peca());
                        preparedStatement.setString(7, helper.getManutencao().getNumero_peca());
                        preparedStatement.setString(8, helper.getManutencao().getQuantidade());
                        preparedStatement.setString(9, helper.getManutencao().getTipo());
                        preparedStatement.setString(10, helper.getManutencao().getRetorno());
                        preparedStatement.setString(11, helper.getManutencao().getTecnico());
                        preparedStatement.setString(12, helper.getManutencao().getHora_final());
                        preparedStatement.executeBatch();
                        preparedStatement.executeUpdate();


                        preparedStatement.close();
                        connection.close();


                         Log.i(TAG, "INSERÇÃO REALIZADAAAA!!");

                    }catch (SQLException e) {
                         e.printStackTrace();

                    }finally {
                         if (connection != null) {
                             try {
                                 connection.close();
                             } catch (SQLException e) {
                                 e.printStackTrace();

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

    @Override   
    protected void onActivityResult(int requestCode, int resultCode, 
            Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        //Verificacao do resultado da nossa requisicao
        if (requestCode == TAKE_PLATAFORMA) {
            if (resultCode == Activity.RESULT_OK) {
                helper.carregarFotoPlataforma(this.localPlataforma);
            } else {
                localPlataforma = null;
            }
        }

        if (requestCode == TAKE_PLATAFORMA2) {
            if (resultCode == Activity.RESULT_OK) {
                helper.carregarFotoPlataforma2(this.localPlataforma2);
            } else {
                localPlataforma2 = null;
            }
        }

        if (requestCode == TAKE_HORIMETRO) {
            if (resultCode == Activity.RESULT_OK) {
                helper.carregarFotoHorimetro(this.localHorimetro);
            } else {
                localHorimetro = null;
            }
        }

        if (requestCode == TAKE_PROBLEMA) {
            if (resultCode == Activity.RESULT_OK) {
                helper.carregarFotoProblema(this.localProblema);
            } else {
                localProblema = null;
            }
        }

        if (requestCode == TAKE_PROBLEMA2) {
            if (resultCode == Activity.RESULT_OK) {
                helper.carregarFotoProblema2(this.localProblema2);
            } else {
                localProblema2 = null;
            }
        }

        if (requestCode == TAKE_CAUSA) {
            if (resultCode == Activity.RESULT_OK) {
                helper.carregarFotoCausa(this.localCausa);
            } else {
                localCausa = null;
            }
        }

        if (requestCode == TAKE_CAUSA2) {
            if (resultCode == Activity.RESULT_OK) {
                helper.carregarFotoCausa2(this.localCausa2);
            } else {
                localCausa2 = null;
            }
        }

    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putSerializable("localArquivo", localPlataforma);
    }


    @Override
    public void run() {

        String diretorioPlataforma = localPlataforma;
        String diretorioPlataforma2 = localPlataforma2;
        String diretorioHorimetro = localHorimetro;
        String diretorioProblema = localProblema;
        String diretorioProblema2 = localProblema2;
        String diretorioCausa = localPlataforma;
        String diretorioCausa2 = localPlataforma2;

        String nomeArqPlataforma = nomeArquivoPlataforma;
        String nomeArqPlataforma2 = nomeArquivoPlataforma2;
        String nomeArqHorimetro = nomeArquivoHorimetro;
        String nomeArqProblema = nomeArquivoProblema;
        String nomeArqProblema2 = nomeArquivoProblema2;
        String nomeArqCausa = nomeArquivoCausa;
        String nomeArqCausa2 = nomeArquivoCausa2;

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

    try {

        envioFTP("login", "pass", diretorioPlataforma, diretorioPlataforma2, diretorioHorimetro, 
                diretorioProblema, diretorioProblema2, diretorioCausa, diretorioCausa2,
                nomeArqPlataforma, nomeArqPlataforma2, nomeArqHorimetro, nomeArqProblema, nomeArqProblema2, nomeArqCausa, nomeArqCausa2);

        handler.post(new Runnable() {

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

    } finally {
        dialog.dismiss();
        }
    }

    private void envioFTP(String login, String senha, String diretorioPlataforma, String diretorioPlataforma2,
    String diretorioHorimetro, String diretorioProblema, String diretorioProblema2, String diretorioCausa, String diretorioCausa2, 
    String nomeArqPlataforma, String nomeArqPlataforma2, String nomeArqHorimetro, String nomeArqProblema, String nomeArqProblema2, 
    String nomeArqCausa, String nomeArqCausa2) {

        FTPClient ftp = new FTPClient();

        try {

            ftp.connect("url", 21);
            ftp.login(login, senha);
            ftp.changeWorkingDirectory("MANUTENCOES");  

            FileInputStream arqEnviarPlataforma = new FileInputStream(diretorioPlataforma);
            FileInputStream arqEnviarPlataforma2 = new FileInputStream(diretorioPlataforma2);
            FileInputStream arqEnviarHorimetro = new FileInputStream(diretorioHorimetro);
            FileInputStream arqEnviarProblema = new FileInputStream(diretorioProblema);
            FileInputStream arqEnviarProblema2 = new FileInputStream(diretorioProblema2);
            FileInputStream arqEnviarCausa = new FileInputStream(diretorioCausa);
            FileInputStream arqEnviarCausa2 = new FileInputStream(diretorioCausa2);

            ftp.setFileTransferMode(FTP.BINARY_FILE_TYPE);
            ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

            ftp.storeFile(nomeArqPlataforma, arqEnviarPlataforma);
            ftp.storeFile(nomeArqPlataforma2, arqEnviarPlataforma2);
            ftp.storeFile(nomeArqHorimetro, arqEnviarHorimetro);
            ftp.storeFile(nomeArqProblema, arqEnviarProblema);
            ftp.storeFile(nomeArqProblema2, arqEnviarProblema2);
            ftp.storeFile(nomeArqCausa, arqEnviarCausa);
            ftp.storeFile(nomeArqCausa2, arqEnviarCausa2);

            ftp.logout();
            ftp.disconnect();

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

            e.printStackTrace();
        }

    }

}