Android Interessante

Embed Size (px)

Citation preview

  • 7/31/2019 Android Interessante

    1/13

    uri Adams

    ile, Mobile e something more

    Incio

    stsComentrios

    Android

    Boas PrticasTestesJSFhibernateAnt

    ESENVOLVENDO PARA ANDROID: NOTIFICAES.

    /01/2012 Deixe um comentrio

    a galera, depois de tanto tempo, estou voltando para escrever um post rpido sobre android. Que so as notificaes, lugares onde possamarmazenados pequenas mensagens de aviso para o usurio.

    ra criar uma nova notificao basta dar inicializar a classeNotif ication. Ela pode receber no construtor uma imagem, texto e o momento eme ela foi criada. Para mais informaes consulte a documentao do Android.

    tification notification = new Notification(R.drawable.imagem, message, System.currentTimeMillis());

    a deve conter a ao no qual ocorrer quando ela for selecionada. Ento ela deve conter uma Intent para saber o que fazer quando issoorrer. Um ponto pra ser reparado o fato de colocar a flagIntent.FLAG_ACTIVITY_NEW_TASKna Intent. Assim ela iniciar uma novativity a sua escolha.

    tent notificationIntent = new Intent(ctx, Activity.class);

    ndingIntent contentIntent = PendingIntent.getActivity(ctx, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK);

    seguir o exemplo completo:

    tification notification = new Notification(R.drawable.imagem, message, System.currentTimeMillis());

    bsp;

    tent notificationIntent = new Intent(ctx, Activity.class);

    ndingIntent contentIntent = PendingIntent.getActivity(ctx, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK);

    bsp;

    Aqui adicionamos o efeito de vibrar ao adicionar a notificao. Lembrando que para isso, precisamos adicionar a p

    no AndroidManifest.xml

    tification.defaults |= Notification.DEFAULT_VIBRATE;

    ng[] vibrate = {0,100,200,300};

    tification.vibrate = vibrate;

    bsp;

    Aqui estamos setando o ttulo para a notificao e o texto que ser exibido

    tification.setLatestEventInfo(ctx, "Ttulo", message, contentIntent);

    bsp;

    Aqui estamos configurando o controle das notificaes. Para isso voc pega um servio do sistema

    tificationManager manager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);

    Ento s exibir a notificao pronta no sistema

    nager.notify(idNoty, notification);

  • 7/31/2019 Android Interessante

    2/13

    quivado em Android Etiquetado com Android

    NDROID: SINCRONIZANDO COM A WEB

    /09/2011 4 Comentrios

    ste Post veremos como sua app android pode se comunicar e obter dados a partir de algum servidor web.

    sa comunicao feita utilizando JSON (JavaScript Object Notation), que uma formatao leve de troca de dados e de fcil manipulaodados formatados de sua maneira.

    sse exemplo, que apenas a captura de um arquivo json retornada pelo servidor, utilizaremos a classe HttpClient para abrir a comunicao.mos abrir uma InputStream e com a classe Scanner , receber os dados enviados do servidor e concatenar em uma StringBuffer. Exemplo dotodo bastante simples carregaJsonDoServidor a seguir:

    blic String carregaJsonDoServidor() throws ClientProtocolException, IOException {

    HttpClient httpClient = new DefaultHttpClient();

    HttpGet httpGet = new HttpGet(encode);

    HttpResponse response = httpClient.execute(httpGet);

    StringBuffer sb = new StringBuffer();

    HttpEntity entity = response.getEntity();

    if (entity != null) {

    Scanner s = new Scanner(entity.getContent());

    s.useDelimiter(",");

    while (s.hasNext()) {

    sb.append(s.next()).append(",");

    }

    }

    return sb.toString();

    quivado em Android

    ESENVOLVENDO PARA ANDROID: MEXENDO COM MAPAS

    /08/2011 1 Comentrio

    a, voltando a falar sobre Android, vamos falar de um negcio bacana, que brincar com o GMap.

    as para manipularmos mapas, teremos que ter uma Google API Key . Para consegui-la, entre no link. Nele, voc deve colocar seu fingerprint,e pode ser conseguido atravs do comando:

    ytool -list -alias meualias -keystore minhachave.jks

    google vai ti devolver uma tela aonde voc ter um trecho de cdigo que ser usado na sua view de mapas.

    om.google.android.maps.MapView

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:apiKey="0BN1gWBPEYDQluZey4KPKZH_C4AMH2sG02G1GLg"

    android:id="@+id/map_view"/>

    mos ao momento feliz, mo na massa!!

    desafio ser o seguinte: Me achar no mapa. Mostrando a minha localizao pelo gps.

    Temos que criar uma o mapa.xml dentro do res/layout, uma vez que recebemos o cdigo do site do google que exibi acima.

  • 7/31/2019 Android Interessante

    3/13

    inearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent">

    LinearLayout>

    Como j foi visto , uma tela uma Activity. Mas neste caso ser um MapActivity pois queremos todas as funcionalidades que um mapade nos dar. Vamos criar uma classe Mapa.java que extenda MapActivity:

    verride

    otected boolean isRouteDisplayed() {

    return false;

    verride

    otected void onCreate(Bundle icicle) {

    super.onCreate(icicle);

    setContentView(R.layout.mapa);

    mapView = (MapView) findViewById(R.id.map_view);

    mapController = mapView.getController();

    //Pegamos os controles necessrios do nosso sistema.

    mapView.setSatellite(true);

    mapView.setStreetView(true);

    mapView.displayZoomControls(true);

    mapController.setZoom(14);

    final List overlays = mapView.getOverlays();

    //Criamos um overlay, assim podemos nos achar no mapa e ainda mostrar o recurso de bssola(plus!).

    MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);

    overlays.add(myLocationOverlay);

    myLocationOverlay.enableCompass();

    myLocationOverlay.enableMyLocation();

    //E temos que atualizar o nosso sistema, quando tivermos em movimento. Para isso, criamos um listener, e //

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    Criteria criteria = new Criteria();

    criteria.setAccuracy(Criteria.ACCURACY_COARSE);

    criteria.setAltitudeRequired(false);

    criteria.setCostAllowed(true);

    criteria.setPowerRequirement(Criteria.POWER_HIGH);

    String provider = locationManager.getBestProvider(criteria, true);

    Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

    atualizarMeuLocal(location);

    LocationListener locationListener = new LocationListener() {

  • 7/31/2019 Android Interessante

    4/13

    public void onStatusChanged(String provider, int status, Bundle extras) {

    }

    public void onProviderEnabled(String provider) {

    }

    public void onProviderDisabled(String provider) {

    atualizarMeuLocal(null);

    }

    public void onLocationChanged(Location location) {

    atualizarMeuLocal(location);

    }

    };

    //Socilitamos que rode o listener a cada 2 segundos ou uma diferena de 20 metros.

    locationManager.requestLocationUpdates(provider, 2000, 20, locationListener );

    }

    //Agora temos que criar o nosso mtodo atualizarMeuLocal(Location location), repare que ele o location qu

    private void atualizarMeuLocal(Location location) {

    if(location != null){

    Double geoLat = location.getLatitude() * 1E6;

    Double geoLong = location.getLongitude() * 1E6;

    GeoPoint point = new GeoPoint(geoLat.intValue(), geoLong.intValue());

    //Sempre que o o mtodo for chamado, ele ir mover o nosso mapa para a posio atual.

    mapController.animateTo(point);

    }

    }

    quivado em Android Etiquetado com Android

    ESENVOVER PARA ANDROID: INTENTS II (ENVIANDO SMS).

    /05/2011 Deixe um comentrio

    utro post bem rpido que a respeito de enviar uma mensagem sms. Para isso temos que pedir permisso para o Android.

    zendo mais um menu na sua app para dar essa opo ao usurio, temos:

    sManager smsManager = SmsManager.getDefault();

    ndingIntent sentIntent = PendingIntent.getActivity(this, 0, null, 0);

    f(PhoneNumberUtils.isWellFormedSmsAddress(pessoa.getTelefone())){

    smsManager.sendTextMessage(aluno.getTelefone(), null,

    "Enviando uma mensagem SMS..", sentIntent,null);

    Toast.makeText(this, "SMS enviado com sucesso!!", Toast.LENGTH_LONG).show();

    }else{

    Toast.makeText(this, "Falha no SMS - Tente novamente..", Toast.LENGTH_LONG).show();

    ra voc se acostumar com esses mtodos e aprender o que cada parmetro desses quer dizer recomendo a Documentao do Android. issoa Semana!

    quivado em Android

    ESENVOLVER PARA ANDROID: INTENTS (CHAMADAS TELEFONICAS).

    /05/2011 Deixe um comentrio

  • 7/31/2019 Android Interessante

    5/13

    maneira fcil Para efetuarmos ligaes telefnicas no Android voc chamar uma intent(inteno, bem bvio. Voc no manda em nada!m que pedir antes) de ligar pra algum, como segue:

    y{

    Intent chamada = new Intent(Intent.ACTION_CALL);

    chamada.setData(Uri.parse("tel:" + pessoa.getTelefone()));

    startActivity(chamada);

    atch(ActivityNotFoundException e){

    Log.e("Exemplo de chamada", "falha", e);

    ra que isso se torne funcional, vamos incluir um uma opo na nossa classe principal de listagem. Integrando com um contextMenu na apps um longclick e buscando as informaes na base de dados.

    ora precisamos incluir a permisso no AndroidManifest.xml.

    ses-permission android:name="android.permission.CALL_PHONE"/>

    quivado em Android Etiquetado com Android

    ESENVOLVER PARA ANDROID: UTILIZANDO RECURSOS DA CMERA.

    /04/2011 2 Comentrios

    utilizao da cmera pode ser feita pedindo a ela para tirar uma foto para voc. um mtodo bastante simples, pois voc no precisaber exatamente como uma cmera funciona e tambm porque poder usar todos os controles j existentes na cmera, como efeitos deminosidade, contraste, flash, etc.

    sta chamar a Intent da cmera:

    tent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    artActivityForResult(intent);

    m esse trecho de cdigo j ser possvel exibir a cmera do emulador ou no seu prprio dispositivo android.

    ora vamos tratar do local onde sua app ir armazenar as fotos.

    ring arquivo = Environment.getExternalStorageDirectory() + "/" + System.currentTimeMillis() + ".jpg";

    le file = new File(arquivo);

    i outputFileUri = Uri.fromFile(file);

    tent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

    manipulao do arquivo feita pela classe File(padro do java) e a localizao do seu SDCard encontrada pelo

    todoEnvironment.getExternalStorageDirectory() . E as operaes adicionais que fizemos foi dar nome imagem e iniciar a atividade.dando continuidade no nosso formulrio, iremos listar algo a mais para increment-la. Na classe Formulario.java que ser chamada pela suativity principal ao clicar em um registro da sua ListView, adicione esse cdigo.

    ivate ImageButton ib;

    = (ImageButton) findViewById(R.id.foto);

  • 7/31/2019 Android Interessante

    6/13

    .setImageResource(R.drawable.noimage);

    .setOnClickListener(new OnClickListener() {

    blic void onClick(View v) {

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    arquivo = Environment.getExternalStorageDirectory() + "/" + System.currentTimeMillis() + ".jpg";

    File file = new File(arquivo);

    Uri outputFileUri = Uri.fromFile(file);

    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

    startActivityForResult(intent, TIRA_FOTO);

    verride

    otected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == TIRA_FOTO){

    if(resultCode != RESULT_CANCELED){

    aluno.setFoto(arquivo);

    carregaImagem();

    }

    }

    ivate void carregaImagem() {

    FileInputStream fis;

    Bitmap bmp = null;

    try {

    fis = new FileInputStream(aluno.getFoto());

    bmp = BitmapFactory.decodeStream(fis);

    fis.close();

    } catch (Exception e) {

    e.printStackTrace();

    }

    if(bmp != null){

    bmp = Bitmap.createScaledBitmap(bmp, 50, 50, true);

    }

    }

    ;

    if(aluno.getFoto() != null){

    carregaImagem();

    }

    qui tratamos do resultado da operao com o mtodo onActivityResult()e a exibio da foto atravs da classe Bitmap e FileInputStrem.

    ora o resultado como ficou no seu emulador.

  • 7/31/2019 Android Interessante

    7/13

    icando no boto:

    sso..

    quivado em Android Etiquetado com Android

    ESENVOLVER PARA ANDROID: PERSISTNCIA COM SQLite (Finalizando)./04/2011 47 Comentrios

    ra que tudo que ns fizemos faa sentido, preciso que possamos adicionar os registros no banco e com isso, alterar o nosso formulrio parariao do registro Pessoa, e criar um evento no boto inserir funcione.

    meiro, temos que substituir o hardcoded por uma chamada ao PessoaDAO e alterar o ArrayAdapter para receber nossa lista de Pessoas.

    pois, vamos substituir o cdigo do boto por algo que realmente funcione. Ento pegaremos os dados da tela, preencheremos o objetossoa e diremos ao PessoaDAO que o salve.

    agora testar. Ai vai o cdigo.

    blic void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.lista);

    lista = (ListView) findViewById(R.id.lista);

    PessoaDao dao = new PessoaDao(this);

    List pessoas = dao.getLista();

    dao.close();

    ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,pessoas);

    lista.setAdapter(adapter);

    lista.setClickable(true);

    tton botao = (Button) findViewById(R.id.botao);

    tao.setOnClickListener(new OnClickListener() {

    blic void onClick(View v) {

    itText nome = (EditText) findViewById(R.id.EditNome);

    itText telefone = (EditText) findViewById(R.id.editTelefone);

    itText site = (EditText) findViewById(R.id.editSite);

    itText endereco = (EditText) findViewById(R.id.editEndereco);

    ssoa.setNome(nome.getEditableText().toString());

    ssoa.setTelefone(telefone.getEditableText().toString());

    ssoa.setSite(site.getEditableText().toString());

    ssoa.setEndereco(endereco.getEditableText().toString());

    ssoaDao dao = new PessoaDao(Formulario.this);

    (posicao != -1){

    pessoa.setId(posicao+1);

    dao.alterar(pessoa);

    else{

    dao.inserir(pessoa);

    o.close();

  • 7/31/2019 Android Interessante

    8/13

    nish();

    ;

    m ponto importante, se voc deixar desta maneira, a app vai comear a empilhar telas, ento vamos usar.

    uando chamamos o mtodo finish, ele finaliza a Activity que est em primeiro plano, e ao voltar na anterior ele roda o mtodo onRestart()er ciclo de vida das Activitys). Ento vamos implementar o onRestart na Activity principal.

    verride

    otected void onResume() {

    super.onResume();carregaLista();

    ivate void carregaLista() {

    PessoaDao dao = new PessoaDao(this);

    List pessoas = dao.getLista();

    dao.close();

    lista.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1,pessoas){

    uando eu j estiver inserido algum registro, o boto que ser renderizado ao clicar em um item na tela de listagem ser o boto de update dessoa. Ento acesse o menu novo e veja o resultado.Ao final de tudo, o resultado ser esse.

    quivado em Android

    ESENVOLVER PARA ANDROID: PERSISTNCIA COM SQLite III (Criando nossa

    gina de Formulrio)./04/2011 5 Comentrios

    se post no tem muito haver com persistncia em si. Porm precisaremos dele para demonstrar os resultados dos mtodos feitosteriormente.

    per rpido vou s demonstrar a tela gerada e o cdigo fonte.

  • 7/31/2019 Android Interessante

    9/13

    mbrando sempre, criando uma nova pgina, precisamos declar-la no AndroidManifest.xml.

    xml version="1.0" encoding="utf-8"?>

    inearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    ndroid:layout_width="fill_parent" android:layout_height="fill_parent"

    ndroid:orientation="vertical">

    ScrollView android:layout_width="fill_parent"

    ndroid:layout_height="fill_parent">

    LinearLayout android:layout_width="fill_parent"

    ndroid:layout_height="fill_parent" android:orientation="vertical">

    ImageButton android:layout_width="wrap_content"

    ndroid:layout_height="wrap_content" android:src="@drawable/noimage"

    ndroid:id="@+id/foto" android:layout_gravity="center">

    TextView android:text="Nome:" android:id="@+id/textNome"

    ndroid:layout_width="wrap_content" android:layout_height="wrap_content">

    EditText android:layout_width="fill_parent" android:text=""

    ndroid:layout_height="wrap_content" android:id="@+id/EditNome"

    ndroid:hint="Digite o nome..">

    TextView android:text="Telefone:" android:id="@+id/textTelefone"

    ndroid:layout_width="wrap_content" android:layout_height="wrap_content">

    EditText android:layout_width="fill_parent" android:text=""

    ndroid:layout_height="wrap_content" android:id="@+id/editTelefone"

    ndroid:hint="Digite o telefone..">

    TextView android:text="Endereo:" android:id="@+id/textEndereco"ndroid:layout_width="wrap_content" android:layout_height="wrap_content">

    EditText android:layout_width="fill_parent" android:text=""

    ndroid:layout_height="wrap_content" android:id="@+id/editEndereco"

    ndroid:hint="Digite o endereo..">

    TextView android:text="Site:" android:id="@+id/textSite"

    ndroid:layout_width="wrap_content" android:layout_height="wrap_content">

    EditText android:layout_width="fill_parent" android:text=""

    ndroid:layout_height="wrap_content" android:id="@+id/editSite"

    ndroid:hint="Digite o site..">

    Button android:text="Inserir" android:id="@+id/botao"

    ndroid:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center">

    /LinearLayout>/ScrollView>

    LinearLayout>

    estranho esse ImageButton solto na tela n? pois , voltaremos para ele nos prximos captulos. E no prximo post integraremos a tela criadam os mtodos do nosso DAO.

    quivado em Android Etiquetado com Android

    ESENVOLVER PARA ANDROID: PERSISTENCIA COM SQLite II (OUTROSMTODOS PARA O NOSSO CRUD.).

    /04/2011 14 Comentrios

    ndo a estrutura do nosso esquema criado, vamos criar outros mtodos no nosso DAO que ser necessrio para fecharmos nosso CRUD dessoa.

    estilo bastante semelhante com o JDBC do Java, ou seja, teremos que converter manualmente um objeto na estrutura da tabela. Com uma

  • 7/31/2019 Android Interessante

    10/13

    erena, no ser preciso escrever a query em si, os mtodos do SQLiteDatabase j as encapsula. Apenas temos que cuidar dos parmetrose passaremos pra eles.

    m objeto SQLiteDatabase j tem pronto o mtodo insert, que recebe o nome da tabela. Assim, para inserir um novo registro no BD, noecisamos do SQL, basta usar o mtodo que o SQL ser gerado automaticamente. Segue o exemplo do mtodo inserir na nossa classessoaDAO:

    blic void inserir(Pessoa pessoa){

    ContentValues valores = new ContentValues();

    valores.put("nome", pessoa.getNome());

    valores.put("site", pessoa.getSite());

    valores.put("foto", pessoa.getFoto());

    valores.put("telefone", pessoa.getTelefone());

    valores.put("endereco", pessoa.getEndereco());

    getWritableDatabase().insert(TABELA, null, valores);

    ndo o nosso C do CRUD em ordem, vamos para a listagem das pessoas cadastradas no banco. Para buscar todas as pessoas teremos quear com o objeto Cursor, fazendo um paralelo com o jdbc, se trata de um primo do ResultSet.

    da mesma forma do insert, contamos o mtodo query que nos d mais liberdade nas buscas(liberdade = maior nmero de parmetros ).

    rsor c = getWritableDatabase().query(TABELA, COLUNAS, null, null, null, null, null);

    outros parmetros que deixamos em branco nos permite fazer select, groupBy, having, sortBy, por ai vai. s explorar a API para ganhartica nesses parmetros.

    milarmente ao ResultSet, tendo o resultado da busca em um Cursor, bastamos iterar sobre suas linhas preenchendo o objeto Pessoa.

    blic List getLista(){

    Cursor c = getWritableDatabase().query(TABELA, COLUNAS, null, null, null, null, null);

    List lista = new ArrayList();

    while(c.moveToNext()){

    Pessoa pessoa = new Pessoa();

    pessoa.setId(c.getInt(0));

    pessoa.setNome(c.getString(1));

    pessoa.setTelefone(c.getString(2));

    pessoa.setEndereco(c.getString(3));pessoa.setSite(c.getString(4));

    pessoa.setFoto(c.getString(5));

    lista .add(pessoa);

    }

    c.close();

    eturn lista;

    app do nosso crud ganhando corpo..

    sso galera, agora dar uma olhada nas coisas da Faculdade porque a boca quente.

    quivado em Android Etiquetado com Android

    ESENVOLVER PARA ANDROID: PERSISTENCIA COM SQLite I (Criando o ModeloDAO).

    /03/2011 6 Comentrios

    esar da crescente capacidade dos aparelhos mveis, ainda no vivel guardar um banco de dados completo nesses dispositivos.

    ra persistirmos os dados no Android, usaremos o SQLite e alguns arquivos arquivos de sistema, os SharedPreferences, que permitemessarmos dados persistidos.

    se post pretendo dividir em duas a quatro partes(to s o bagao pra pensar melhor). Ao final desses posts, teremos uma tela de formulriom as principais funcionalidades para fazermos um CRUD ou perto disso.

    sse primeiro post comearemos fazendo nossa classe de modelo(POJO/JavaBean) e a classe DAO, para acesso do banco de dados.

    ixando de mimimi, criaremos a classe de modelo que queremos representar no nosso BD, neste exemplo, a classe Pessoa (nada batido

  • 7/31/2019 Android Interessante

    11/13

    rivate int id;

    rivate String nome;

    rivate String telefone;

    rivate String endereco;

    rivate String site;

    rivate String foto;

    bsp;

    respectivos getters e setters

    tambm seria interessante sobrescrever o mtodo toString().

    zendo uma reprise, o DAO, ou Data Access Object, um padro que deve funcionar como ponte entre o mundo relacional do banco dedos, com o mundo OO das linguagens de alto nvel como o java. No caso do Android, o SQLite que um banco mais leve, salva os objetosm arquivos locais.

    remos que a metologia de implementao do DAO no Android se assemelha bastante com o JDBC do java.

    ra criar uma classe PessoaDAO.java, temos que estender SQLiteOpenHelper (ai est a diferena) e ter um construtor que receba um objetotipo Context. Esse objeto traz informaes sobre a aplicao. Ao receber esse objeto, chamamos o construtor da classe me, passando o

    ntexto e algumas configuraes do seu banco em particular.

    go de sada, precisaremos sobrescrever dois mtodos:

    onCreate, mtodo que ao executar cria o nosso BD.

    onUpgrade, executado na alterao da estrutura do banco.

    blic class PessoaDAO extends SQLiteOpenHelper{

    public PessoaDAO(Context context, String name, CursorFactory factory,

    int version) {

    super(context, name, factory, version);

    // TODO Auto-generated constructor stub

    }

    @Override

    public void onCreate(SQLiteDatabase db) {

    // TODO Auto-generated method stub

    }

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    // TODO Auto-generated method stub

    }

    ecisamos corrigir o construtor da classe, criaremos as constantes necessrias para configurao do banco:

    ivate static final String TABELA = "Pessoa";

    rivate static final int VERSION = 1;

    ublic PessoaDAO(Context context) {

    uper(context, TABELA, null, VERSION);

    por fim, para criarmos o banco, precisamos de um script SQL de criao informando as colunas e seus tipos.

    REATE TABLE " + TABELA +

    ( id INTEGER PRIMARY KEY," +

    nome TEXT UNIQUE NOT NULL," +

    telefone TEXT," +

    endereco TEXT," +

    site TEXT, " +

    foto TEXT" +

    );";

    sa query ser executada na criao do banco, ento inserimos no mtodo onCreate().

    e alguma alterao for feita no banco, por exemplo, excluimos (essa no uma boa tcnica, perderemos os dados, mas isso s um pequenoorial) o anterior e criamos um novo com as alteraes.

    eguir como ficaram os mtodos em questo:

  • 7/31/2019 Android Interessante

    12/13

    Override

    ublic void onCreate(SQLiteDatabase db) {

    String sql = "CREATE TABLE " + TABELA +

    "( id INTEGER PRIMARY KEY," +

    " nome TEXT UNIQUE NOT NULL," +

    " telefone TEXT," +

    " endereco TEXT," +

    " site TEXT, " +

    " foto TEXT" +

    ");";

    db.execSQL(sql);

    Override

    ublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {db.execSQL("DROP TABLE IF EXISTS " + PessoaDAO.TABELA);

    this.onCreate(db);

    be continued..

    quivado em Android

    Posts mais antigos

    vaCE Community Conference EU VOU!

    picos recentes

    DESENVOLVENDO PARA ANDROID: NOTIFICAES.REFACTORING Caso Real e boas maneiras Parte IV (Keep Walking)REFACTORING Caso Real e boas maneiras Parte III (Solues)REFACTORING Caso Real e Boas Maneiras: Parte II (Bad Smells)REFACTORING Caso Real e boas maneiras Parte I (Intro)

    quivos

    janeiro 2012novembro 2011setembro 2011agosto 2011maio 2011abril 2011maro 2011

    ategorias

    AndroidAntBoas PrticashibernateJSFTestes

    ais Acessados

  • 7/31/2019 Android Interessante

    13/13

    yuriadamsmaia.files.wordpyuriadamsmaia.files.wordpyuriadamsmaia.files.wordpyuriadamsmaia.files.wordpgithub.com/yuriadams.

    sta de Links

    Cristiano MilfontHanderson FrotaIgo CoelhoJavaCE

    Marcos BrizenoRafael PonteRodrigo MaiaRodrigo Maia Testes

    uri Adams

    Espancanento de putas e o Littlefinger na tenda do Renly? Wtf? 17 hours agoNao estou gostando desse lado "for dummies" que game of thrones esta indo. 18 hours agoI unlocked the Game of Thrones: Garden of Bones sticker on @GetGlue! http://t.co/3b2HbRkq18 hours agoRT @NFLBrasil: Trs jogos da MLB foram adiados hoje por causa da chuva. Pode at nevar que os jogos da NFL no so adiados! LogoNFL &gt ... 21 hours ago

    My Top 2 #lastfm Artists: Above & Beyond (2) & NC306 - Alottoni, Sra. Jovem Nerd, Portuguesa e Azaghal (1) http://t.co/20hEpVPE22 hours ago

    llow me!

    gite seu endereo de email para acompanhar esse blog e receber notificaes de novos posts por email.

    og no WordPress.com.

    ma: Enterprise at StudioPress.guir

    ollow Yuri Adams

    tenha todo post novo entregue na sua caixa de entrada.

    wered by WordPress.com