J2V

Informática & Tecnologia

Android: Enviando mensagem via Whatsapp

Caso você queira enviar uma mensagem do seu app para o Whatsapp, uma das soluções é utilizar o código abaixo.

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "Mensagem via Whatsapp! J2V Informática");
sendIntent.setType("text/plain");
sendIntent.setPackage("com.whatsapp");
startActivity(Intent.createChooser(sendIntent, ""));

Será aberto a tela de contatos do Whatsapp para que você selecione o usuário ao qual deseja enviar a mensagem.

Android: Restaurando Backups

No post anterior vimos como gerar backup, agora vamos ver como restaurá-lo. Segue um exemplo de código para restauração do banco.

public void restaurarBackup() {
	try {
		gerarBackup(true);
		File sd = Environment.getExternalStorageDirectory();
		File data = Environment.getDataDirectory();
		if (sd.canWrite()) {
			String currentDBPath = "//data//br.com.j2v.app.nomeAplicativo//databases//dbNAME";
			String backupDBPath = "bkps/dbNAME.db"; //-- Caminho do arquivo de backup a ser restaurado
			File backupDB = new File(data, currentDBPath);
			File currentDB = new File(sd, backupDBPath);

			FileChannel src = new FileInputStream(currentDB).getChannel();
			FileChannel dst = new FileOutputStream(backupDB).getChannel();
			dst.transferFrom(src, 0, src.size());
			src.close();
			dst.close();
			Toast.makeText(getApplicationContext(), "Backup restaurado com sucesso!", Toast.LENGTH_LONG).show();
		}
	} catch (Exception e) {
		Log.e("J2V", e.toString());
		Toast.makeText(getApplicationContext(), "Erro ao tentar restaurar backup!", Toast.LENGTH_SHORT).show();
	}
}

 

Android: Gerando Backups

Uma das formas de se gerar backup do banco de dados do seu aplicativo é utilizando os comandos abaixo.

public void gerarBackup(Boolean silent) {
	try {
		File sd = Environment.getExternalStorageDirectory();
		File data = Environment.getDataDirectory();

		if (sd.canWrite()) {

			createDirIfNotExists("/bkps");

			String currentDBPath = "//data//br.com.j2v.app.nomeAplicativo//databases//dbNAME";
			String backupDBPath = "bkps/dbNAME-" + getDateTime("log") + ".db";
			File currentDB = new File(data, currentDBPath);
			File backupDB = new File(sd, backupDBPath);

			FileChannel src = new FileInputStream(currentDB).getChannel();
			FileChannel dst = new FileOutputStream(backupDB).getChannel();
			dst.transferFrom(src, 0, src.size());
			src.close();
			dst.close();
			if (!silent) {
				Toast.makeText(getBaseContext(), "Backup gerado com sucesso!\r\nCaminho: " + backupDBPath, Toast.LENGTH_LONG).show();
			}
		}
	} catch (Exception e) {
		Log.e("J2V", e.toString());
		Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG).show();
	}
}

 

Android: Gerando Relatório PDF

Umas das formas de se gerar PDF em JAVA para Android é utilizando o código abaixo. Em breve vou detalhar passo a passo dos comandos. Por enquanto fica de anotação.

public void gerarPDF() {
	Document document = new Document(PageSize.A4);
	document.setPageSize(PageSize.A4.rotate());
	String NOME_ARQUIVO = "Relatorio.pdf";
	String SD_CARD = Environment.getExternalStorageDirectory().toString();
	File pdfDir = new File(SD_CARD + File.separator + "J2V");

	if (!pdfDir.exists()) {
		pdfDir.mkdir();
	}

	File pdfSubDir = new File(pdfDir.getPath() + File.separator + "relatorios");

	if (!pdfSubDir.exists()) {
		pdfSubDir.mkdir();
	}

	String NOME_COMPLETO = pdfSubDir.getPath()  + File.separator + NOME_ARQUIVO;

	File outputFile = new File(NOME_COMPLETO);

	if (outputFile.exists()) {
		outputFile.delete();
	}

	try {
		PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(NOME_COMPLETO));

		document.open();
		document.addAuthor("Jefferson Ventura");
		document.addCreator("J2V Informática");
		document.addSubject("Relatorio J2V");
		document.addCreationDate();
		document.addTitle("Relatorio J2V");

		XMLWorkerHelper workerHelper = XMLWorkerHelper.getInstance();


		String htmlToPDF = "<html><head></head><body>" +
				"<h1> Relatório J2V Informática" +
				"</body></html>";

		workerHelper.parseXHtml(pdfWriter, document, new StringReader(htmlToPDF));
		document.close();

		Toast.makeText(this, "Relatório Gerado com Sucesso!", Toast.LENGTH_SHORT).show();

		exibirRelatorio(NOME_COMPLETO, this);

	} catch (DocumentException e) {
		e.printStackTrace();
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}

}

P.S: Só lembrando que para gerar PDF utilizando os comandos acima vamos precisar importar para nosso diretório libs os seguintes arquivos: itextg-5.5.8 e xmlworker-5.5.6

Android: Evitar que o teclado fique sobre as EditText

Quando você criar uma activity que tenha campos editáveis pelo usuário utilizando o teclado, é recomendável você utilizar essa dica para evitar que o teclado fique sobre o campo e o usuário perca a visão de seu conteúdo, do que esta sendo digitado.

<activity
	android:name=".activityname"
	android:label="@string/app_name"
	android:windowSoftInputMode="adjustPan|adjustResize" >
</activity>

Linha 4:
android:windowSoftInputMode="adjustPan|adjustResize"

Android: Utilizando o recurso TextToSpeech

Caso queira utilizar o recurso de reprodução/leitura de textos no Android, uma das soluções é você utilizar o código abaixo.

//-- Crie essa propriedade/atributo/variavel na sua classe
private TextToSpeech engine;

//-- Na função onCreate() coloque o código abaixo
engine = new TextToSpeech(this, this);

//-- Sua classe deve implementar TextToSpeech.OnInitListener

//-- Será criado a função abaixo ou crie você mesmo
@Override
public void onInit(int status) {
    if (status == TextToSpeech.SUCCESS) {
        engine.setLanguage(Locale.getDefault());
        engine.setPitch((float) 1);
        engine.setSpeechRate((float) 1);
    }
}

//-- Agora só executar o código abaixo com o texto a ser reproduzido
engine.speak(text, TextToSpeech.QUEUE_FLUSH, null, null);

Você pode criar uma função para a reprodução dos textos, como no exemplo abaixo:
public void speakText(String text) {
    engine.speak(text, TextToSpeech.QUEUE_FLUSH, null, null);
}

Agora basta utilizar a função acima para reprodução dos textos:
speakText("Esse é um exemplo da J2V Informática");

Android: Criando uma Caixa de Diálogo

Uma das formas de se criar uma Caixa de Diálogo no Android é executando o seguinte código abaixo.

AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setMessage("Teste caixa de dialogo! J2V Informática!");
dialog.setNeutralButton("OK", null); //-- Segundo parâmetro função de callBack
dialog.show();

Exemplo com a passagem de função de callback:

dialog.setNeutralButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        //-- Função ou comandos de callback
    }
});

Exemplo:

AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setMessage("Deseja realmente excluir o registro?");
dialog.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
         excluirRegistro(idRegistro);
    }
});
dialog.show();

Android: Criando um Timer para execução após X Segundos

Caso você queira executar um trecho de código, chamar uma função, etc, após determinado tempo, você pode criar um Timer. Segue abaixo uma das soluções.

new Timer().schedule(new TimerTask() {
    @Override
    public void run() {
         Log.v("J2V", "Executou após 2 segundos");
    }
}, 2000);

Android: Capturando Data e Hora do Sistema

Segue abaixo uma das formas de capturar a Data e Hora do sistema Android.

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Date date = new Date();

String dataHora = dateFormat.format(date);

Toast.makeText(this, dataHora, Toast.LENGTH_SHORT).show();
/* Saída: 13/01/2016 17:32:15 */

Como já deve ter percebido, você pode passar o formato/parâmetro de quais informações você deseja capturar, alterando apenas o parâmetro de formato na função SimpleDateFormat.
SimpleDateFormat("dd/MM/yyyy");
/* Saída: 13/01/2016 */

SimpleDateFormat("HH:mm:ss");
/* Saída: 17:32:15 */

SimpleDateFormat("dd");
/* Saída: 13 */

Documentação completa você encontra no link abaixo:
Android Developer: SimpleDateFormat

Função de Máscara para String

Segue abaixo uma função para colocar máscara em strings.

/*
* Função para formatar uma string conforme a máscara especificada
*/
function mask($str, $mask)
{
    $maskared = '';
    $k        = 0;
    for ($i = 0; $i <= strlen($mask) - 1; $i++) {
        if ($mask[$i] == '#') {
            if (isset($str[$k])) {
                $maskared .= $str[$k++];
            }
        } else {
            if (isset($mask[$i])) {
                $maskared .= $mask[$i];
            }
        }
    }

    return $maskared;
}

Utilização: (Alguns exemplos)
$cnpj = "11222333000199";
echo mask($cnpj,'##.###.###/####-##');
/* Saída: 11.222.333/0001-99 */

$cpf = "00100200300";
echo mask($cpf,'###.###.###-##');
/* Saída: 001.002.003-00 */

$cep = "08665110";
echo mask($cep,'#####-###');
/* Saída: 08665-110 */

$data = "27022016";
echo mask($data,'##/##/####');
/* Saída: 27/02/2016 */

$str = "jefferson";
echo mask($str,'###-###-###');
/* Saída: jef-fer-son */

Page 3 of 5

Desenvolvido em WordPress & Tema por Anders Norén