android salvar em sd
TRANSCRIPT
-
7/23/2019 Android Salvar Em Sd
1/16
Android - Lendo e Carregando Arquivo Texto
Neste ms abordarei um pouquinho de como podemos criar e carregar
rquivos do tipo texto no Android armazenando estas informaes no
arto !" do dispositivo# $ontaremos um exemp%o pr&tico abordando
ecursos como' Criar e uti%izar o evento (nc%ic)*+ do boto, ti%izao da
%asse ./ava#0(1 para manipu%ao de arquivos, entre outros recursos que
odero ser acompanhados ao decorrer da %eitura#
pes de Armazenamento
( Android nos fornece diversas formas para sa%var os dados, sendo que a
o%uo depende da necessidade, podendo assumir as seguintes formas'
hared2references' Armazenar dados particu%ares primitivos em pares
have-va%or#
nterna% !torage' Armazenar dados privados na mem3ria do dispositivo#
4xterna% !torage' Armazenar dados p5b%icos sobre o armazenamento
xterno comparti%hado#
6Lite "atabases' Armazenar dados estruturados em um banco de dados#
-
7/23/2019 Android Salvar Em Sd
2/16
Como foi dito no in7cio do artigo, usaremos a opo .4xterna% !torage1,
ue significa Armazenamento externo#
xterna% !torage 8 Armazenamento 4xterno
(s dispositivos compat7veis com o sistema Android suporta uma mem3ria
xterna comparti%hada que podemos uti%izar para diversas tarefas, como
or exemp%o manipu%ar arquivos do tipo texto# 2odendo ser um carto !"
u uma mem3ria interna no remov7ve%# (s arquivos sa%vos para ormazenamento externo so de %eitura para todos podendo ser modificado
e%o usu&rio#
Comandos 5teis'
4nvironment#get4xterna%!torage!tate*+ ' Comando necess&rio para
erificar se a m7dia est& dispon7ve%#
4nvironment#get4xterna%!torage"irector9*+' comando para abrir um
iret3rio que representa a raiz do armazenamento externo, usando o
iret3rio'
Android:dados:;nome do pacote
-
7/23/2019 Android Salvar Em Sd
3/16
sco%heremos o arquivo para posteriormente carreg&-%o em um 4ditText#
2ara isto abra seu 4c%ipse e c%ique em .>i%e:Ne?:Android 2ro=ect1 e crie
m pro=eto em Android, recomendo a criao na verso @#@ ou @##
Adicionando permisses
m deta%he importante para esse pro=eto B que ser& necess&rio habi%itar aermisso .D0T4E4FT4DNALE!T(DAG41 no arquivo manifest, pois
raas a essa permisso que seu ap%icativo pode gravar arquivos no !"Card# " um dup%o c%ique no arquivo .Android$anifest#xm%1 e na aba
2ermissions1 c%ique no boto .Add1 para adicionar o c3digo a seguir# Her
magem IJ#
android.permission.WRITE_EXTERNAL_STORAGE"
-
7/23/2019 Android Salvar Em Sd
4/16
agem IJ# Android $anifest 2ermissions#
4sta permisso indica que podemos sa%var dados em um dispositivo
xterno, o c3digo dever& ficar parecido com o a seguir#
Kxm% version"1.0"encoding"utf-"K"
androidte&t+""
android*aout_(idt!+"mat$!_parent"
android*aout_!ei,!t+"(rap_$ontent"#
/Te&t9ie(
androidte&t+"Te&to do ar>uio a ser sa*o"
android*aout_(idt!+"(rap_$ontent"
android*aout_!ei,!t+"(rap_$ontent"#
/EditTe&t
androidid+"'Fid#edtSa*ar"
androidte&t+""
android*aout_(idt!+"mat$!_parent"
androidsin,*eLine+"fa*se"
android,rait+"top"
android*ines+""
android*aout_!ei,!t+"1;0dp"#
-
7/23/2019 Android Salvar Em Sd
7/16
/:utton androidte&t+"Sa*ar t&t"
androidon4*i$%+"$*i$%_Sa*ar"
android*aout_!ei,!t+"(rap_$ontent"
android*aout_(idt!+"11dp"
android*aout_,rait+"$enter_!oriHonta*"#
/Te&t9ie( androidte&t+" "
androidid+"'Fid#t&tCreen$!er"
android*aout_(idt!+"fi**_parent"
android*aout_!ei,!t+"(rap_$ontent"#
/LinearLaout android*aout_(idt!+"fi**_parent"
android,rait+"$enter_erti$a*"
android*aout_!ei,!t+"(rap_$ontent"
/Spinner androidid+"'Fid#spListarAr>uios"
android*aout_(idt!+";;0dp"
android*aout_(ei,!t+"10"
android*aout_!ei,!t+"0dp"#
/:utton android*aout_(ei,!t+"1.0"
androidte&t+"4arre,ar t&t"
androidon4*i$%+"$*i$%_4arre,ar"
android*aout_(idt!+"11dp"android*aout_!ei,!t+"(rap_$ontent"#
/#LinearLaout
/Te&t9ie(
androidte&t+"Te&to do ar>uio a ser $arre,ado"
android*aout_(idt!+"(rap_$ontent"
android*aout_!ei,!t+"(rap_$ontent"#
/EditTe&t
androidid+"'Fid#edtLer"
androidte&t+""
android*aout_(idt!+"mat$!_parent"
androidsin,*eLine+"fa*se"
android,rait+"top"
android*ines+"" android*aout_!ei,!t+"1;0dp"#
#LinearLaout
-
7/23/2019 Android Salvar Em Sd
8/16
Codemos rodar o e&emp*o e teremos uma te*a pare$ida $om a da i,ura 0.
,ura 0. La-Out da ap*i$a
-
7/23/2019 Android Salvar Em Sd
9/16
mport android.os.EnironmentK
mport android.ie(.9ie(K
mport android.(id,et.ArraAdapterK
mport android.(id,et.SpinnerK
mport android.(id,et.Te&t9ie(K
mport android.(id,et.ToastK
4riaremos tam)m a*,umas ari6eis ao de$orrer do deseno*imento8
onfiram a se,uir
riate Te&t9ie( t&tRootK
riate Te&t9ie( t&tNomeAr>K
riate Te&t9ie( t&tSa*arK
riate Te&t9ie( t&tLerK
riate Spinner SpnListarAr>uiosK
riate ArraList/Strin, Ar>uios + ne( ArraList/Strin,MK
No eento On4reateM faremos atri)ui + MTe&t9ie( find9ie(:IdMR.id.edtNomeAr>K
t&tSa*ar + MTe&t9ie( find9ie(:IdMR.id.edtSa*arK
t&tLer + MTe&t9ie( find9ie(:IdMR.id.edtLerK
SpnListarAr>uios + MSpinner find9ie(:IdMR.id.spListarAr>uiosK
t&tRoot.appendMO)terBiretorioMK
ListarMK
-
7/23/2019 Android Salvar Em Sd
10/16
Q
$at$! ME&$eption e
P
2ensa,emM"Erro " F e.,et2essa,eMK
Q
Q
A$!ei ne$ess6rio $riar uma funua* ser6espons6e* notifi$ar o usu6rio. Esta $*asse ?Toast@ se difere da
A*ertBia*o,.:ui*der@ pois a mesma apenas informa no rodap inferior da
e*a do Android o o$orrido e *o,o em se,uida desapare$e8 a$!ei interessante
sar este tipo de re$urso para fins de aprendiHado8 podemos $onferir a se,uir
mtodo >ue re$e)e $omo parmetro uma Strin,.
riate oid 2ensa,emMStrin, ms,
oast.ma%eTe&tM,etApp*i$ation4onte&tM8 ms,8 Toast.LENGT5_S5ORT.s!o(MK
prD&imo mtodo nos retorna o diretDrio de armaHenamento e&terno.
riate Strin, O)terBiretorioM
i*e root + android.os.Enironment.,etE&terna*Stora,eBire$torMK
return root.toStrin,MK
O mtodo ListarM preen$!er6 o $omponente Spinner $om os ar>uios do tipo
.t&t@ sa*os no diretDrio e&terno. 3samos os tipos de ari6eis i*e e i*e8endo respe$tiamente respons6eis por o)ter o diretDrio e os ar>uios deste
-
7/23/2019 Android Salvar Em Sd
11/16
iretDrio. Adi$ionamos os ar>uios em um ?Arra@ para posteriormente
ti*iH6-*os.
u)*i$ oid ListarM
i*e diretorio + ne( i*eMO)terBiretorioMK
i*e ar>uios + diretorio.*isti*esMK
fMar>uios U+ nu**
P
int *en,t! + ar>uios.*en,t!KforMint i + 0K i / *en,t!K FFi
P
i*e f + ar>uiosiK
if f.isi*eM
P
Ar>uios.addMf.,etNameMK
Q
Q
rraAdapter/Strin, arraAdapter + ne( ArraAdapter/Strin,!is8android.R.*aout.simp*e_dropdo(n_item_1*ine8 Ar>uiosK
SpnListarAr>uios.setAdapterMarraAdapterK
Q
Aqui
4riando o mtodo Sa*arM
Ao $*i$armos no )ot=o Sa*ar e&e$utaremos o mtodo ?4*i$%_Sa*ar@8
saremos um Tr..4at$!8 onde transformamos o te&to di,itado em um ?Arra
e :tes@ e $om o mtodo ?Write@ inserimos os dados se,uido de uma
-
7/23/2019 Android Salvar Em Sd
12/16
otifi$auios ?.t&t@.
9er Ima,em 0V.
u)*i$ oid $*i$%_Sa*arM9ie(
Strin, *strNomeAr>K
i*e ar>K
)te dadosK
tr
P*strNomeAr> + t&tNomeAr>.,etTe&tM.toStrin,MK
r> + ne( i*eMEnironment.,etE&terna*Stora,eBire$torM8 *strNomeAr>K
i*eOutputStream fosK
ados + t&tSa*ar.,etTe&tM.toStrin,M.,et:tesMK
fos + ne( i*eOutputStreamMar>K
fos.(riteMdadosK
fos.f*us!MK
fos.$*oseMK
2ensa,emM"Te&to Sa*o $om su$essoU"K
ListarMK
Q
$at$! ME&$eption e
P
2ensa,emM"Erro " F e.,et2essa,eMK
Q
-
7/23/2019 Android Salvar Em Sd
13/16
,ura 0V. Sa*ando o Ar>uio .t&t.
4riando o mtodo 4arre,arM
-
7/23/2019 Android Salvar Em Sd
14/16
6 o mtodo $arre,ar8 $ontinuaremos a uti*iHar o Tr..4at$!8 sendo >ue de
rimeiro momento pe,amos o item >ue est6 se*e$ionado no $omponente
Spinner8 *impamos o $ampo ?t&tLer@ e *o,o em se,uida efetuamos uma
eitura *in!a a *in!a do ar>uio $arre,ando para a $ai&a de te&to toda a
nformaK
i*e ar>KStrin, *str*in!aK
tr
P
trNomeAr> + SpnListarAr>uios.,etSe*e$tedItemM.toStrin,MK
t&tLer.setTe&tM""K
r> + ne( i*eMEnironment.,etE&terna*Stora,eBire$torM8 *strNomeAr>K
ufferedReader )r + ne( :ufferedReaderMne( i*eReaderMar>K
(!i*e MM*str*in!a + )r.readLineM U+ nu**
P
if MUt&tLer.,etTe&tM.toStrin,M.e>ua*sM""
P
t&tLer.appendM"n"K
Q
t&tLer.appendM*str*in!aK
Q
2ensa,emM"Te&to 4arre,ado $om su$essoU"K
Q
$at$! ME&$eption e
P
2ensa,emM"Erro " F e.,et2essa,eMK
Q
-
7/23/2019 Android Salvar Em Sd
15/16
,ura 0. 4arre,ando o Ar>uio .t&t.
on$*us=o
-
7/23/2019 Android Salvar Em Sd
16/16
Este arti,o nos demonstrou os $on$eitos )6si$os e essen$iais para tra)a*!ar
om ar>uios te&tos no Sistema Android. Cro$urei demonstrar a*,uns
e$ursos diferentes dos a)ordados nos meses anteriores a fim de aumentar
osso *e>ue de aprendiHado.
9ou fi$ando por a>ui8 um forte a)raue emU