Neste artigo vou mostrar como gravar e ler texto no armazenamento externo (memória externa, cartão SD, etc.) do Android usando Xamarin for Android no Visual Studio 2015 e a linguagem C#. |
Gravar e ler texto em qualquer aplicação é uma tarefa comum e o Android fornece 4 opções que podemos usar para armazenar informações :
SharedPreferences - Armazena dados no formato chave-valor. Usado para pequenas quantidades de dados;
Internal Storage - Armazena dados privados na memória do dispositivo;
External Storage - Armazena dados públicos no armazenamento externo (Cartão SD, etc) compartilhado;
Banco de dados - SQLite - Armazena dados estruturados em um banco de dados;
Neste artigo o nosso foco será o armazenamento externo ou External Storage.
Cada dispositivo compatível com o Android suporta um armazenamento externo compartilhado que você pode usar para salvar arquivos. Isso pode ser uma mídia de armazenamento removível (como um cartão SD) ou um armazenamento interno (não removível).
Arquivos
salvos para o armazenamento externo são legíveis publicamente e podem ser
modificados pelo usuário quando for habilitado o armazenamento em massa USB para
transferir arquivos.
Considere que armazenamento externo pode tornar-se indisponível se o usuário
montar o armazenamento externo em um computador ou remover os meios de
comunicação e não há nenhuma segurança imposta sobre os arquivos que você salvar
para o armazenamento externo. Todos os aplicativos podem ler e escrever arquivos
colocados no armazenamento externo e o usuário pode removê-los
Para ler ou gravar arquivos no armazenamento externo, seu aplicativo deve adquirir as permissões de sistema READ_EXTERNAL_STORAGE ou WRITE_EXTERNAL_STORAGE.
O processo para escrever/ler no armazenamento externo utiliza as propriedades :
Android.OS.Environment.ExternalStorageDirectory - Retorne o diretório de armazenamento externo principal
Android.OS.Environment.ExternalStorageState - Retorna o estado atual do dispositivo primário de armazenamento "externo".
Neste artigo vou mostrar como escrever um texto na carga da aplicação Android e com acessar o texto no armazenamento externo quando o usuário clicar em um botão de comando.
Recursos usados:
Visual Studio Community 2015 ou Xamarin Studio
Emulador Android virtual ou físico (veja como emular usando o Vysor)
Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.
Criando o projeto no Visual Studio 2015 Community
Abra o VS 2015 Community e clique em New Project;
Selecione a linguagem Visual C# e o template Android -> Blank App(Android)
Informe o nome App.GravarLerSDCard e clique no botão OK;
Abra o arquivo Main.axml na pasta Resources/layout e no modo Designer. Primeiro remova o controle Button que vem definido por padrão e a seguir inclua os seguintes controles a partir da ToolBox:
1 Button - id = btnEnviar
1 TextView - id = txtAcao
Abaixo vemos o leiaute no emulador do Xamarin e ao lado o respectivo código XML gerado :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text="Ler Arquivo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnLer" />
<TextView
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtAcao" />
</LinearLayout>
|
A seguir abra o arquivo MainActivity.cs e altere o código desse arquivo conforme abaixo:
using Android.App;
using Android.OS;
using Android.Widget;
namespace App.GravarLerSDCard
{
[Activity(Label = "App.GravarLerSDCard", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
TextView txtv1;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
Button button = FindViewById<Button>(Resource.Id.btnLer);
txtv1 = FindViewById<TextView>(Resource.Id.txtAcao);
button.Click += Button_Click;
EscreverArquivo();
}
private void EscreverArquivo()
{
var sdCardPath = Android.OS.Environment.ExternalStorageDirectory.Path;
var arquivoPath = System.IO.Path.Combine(sdCardPath, "ArqSDCard1.txt");
if (!System.IO.File.Exists(arquivoPath))
{
using (System.IO.StreamWriter writer = new System.IO.StreamWriter(arquivoPath, true))
{
writer.Write("Macoratti .net - Quase tudo para .NET");
Toast.MakeText(this, "Arquivo " + arquivoPath.ToString() + " gerado com sucesso.", ToastLength.Short).Show();
}
}
else
{
Toast.MakeText(this, "Arquivo " + arquivoPath.ToString() + " já existe.", ToastLength.Short).Show();
}
}
private void Button_Click(object sender, System.EventArgs e)
{
var sdCardPath = Android.OS.Environment.ExternalStorageDirectory.Path;
var arquivoPath = System.IO.Path.Combine(sdCardPath, "ArqSDCard1.txt");
if (System.IO.File.Exists(arquivoPath))
{
var texto = System.IO.File.ReadAllText(arquivoPath);
txtv1.Text = texto;
Toast.MakeText(this, "Arquivo lido com sucesso.", ToastLength.Short).Show();
}
else
{
Toast.MakeText(this, "Arquivo " + arquivoPath.ToString() + " não encontrado.", ToastLength.Short).Show();
}
}
}
}
|
Neste código após criar uma instância para os controles btnLer e txtAcao e definir o evento Click para o botão de comando, invocamos o método EscreverArquivo() que vai escrever um texto no armazenamento externo.
No método EscreverArquivo() obtemos o caminho do armazenamento externo e definimos o arquivo ArqSDCard1.txt que será criado para receber o texto a ser escrito usando o método Write da classe StreamWriter.
Para ler o arquivo temo no evento Click do botão de comando Ler
Arquivo o código que acessa o armazenamento externo e exibe o dados gravados
no arquivo ArqSDCard1.txt.
Executando o código acima teremos o seguinte resultado :
A tela inicial do dispositivo a mensagem informando que o texto foi gravado no armazenamento externo. |
Ao clicar no botão de comando vemos o texto sendo exibido no TextView e o aviso informando que o arquivo foi lido. |
Pegue o projeto completo aqui : App.GravarLerSDCard.zip (sem as referências)
E, como Moisés levantou a serpente no
deserto, assim importa que o Filho do homem seja levantado;
Para que todo aquele que nele crê não pereça, mas tenha a vida eterna.
João 3:14,15
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Xamarim - Desenvolvimento Multiplataforma com C# ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Criando sua primeira ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Anatomia da aplicação - Macoratti.net
https://developer.xamarin.com/api/type/Android.App.AlertDialog/