android salvar em sd

Upload: raislan-dielli

Post on 19-Feb-2018

225 views

Category:

Documents


0 download

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