Detectando a primeira execução de um aplicativo Android com Phonegap

Quando desenvolvemos aplicativos para dispositivos móveis usando SQLITE precisamos criar as tabelas durante a execução do aplicativo já que não temos disponível um gerenciador de banco de dados para que a tabela seja criada previamente no dispositivo, o problema é que precisamos criar um artifício para que esse trecho de código da criação da tabela seja executado somente uma vez, ou seja, na primeira execução do aplicativo.

A solução é bastante simples, lembrando que tal solução se aplica somente a aplicativos desenvolvidos com Phonegap, basicamente devemos criar um flag, uma variável de controle, na primeira execução do aplicativo e armazenar ela de modo local, para que possa ser consultada a qualquer momento na aplicação.

function onDeviceReady() {
    //Criamos e armazenamos a variável local
    var firstrun = window.localStorage.getItem("runned");

    if ( firstrun == null ) {
        //Trecho que deve ser executado somente uma vez
        //Gravamos um valor qualquer no flag para que possa ser feita a comparação
        window.localStorage.setItem("runned", "1");
    }else{
        //Trecho que deve ser executado todas as vezes
    }
}

Trabalhando com Datas no Sqlite

Muitas pessoas têm dúvida na hora de trabalhar com datas no sqlite, o que é aceitável já que sqlite não tem um tipo data que possa ser especificado para um campo, como date ou datetime, por exemplo, o que nos resta então é usar os tipos nativos do sqlite para armazenar e manipular as datas, ou seja, podemos usar:

TEXT para armazenar uma string com o valor da data, exemplo “2013-03-03 21:21:00”, dessa forma podemos ordenar os valores de acordo com o campo data sem problemas.

Repare que no trecho do código abaixo o campo datahora e ultima são criados com o tipo TEXT.

CREATE TABLE IF NOT EXISTS conta
             (codigo INTEGER PRIMARY KEY AUTOINCREMENT, 
             datahora TEXT, 
             ultima TEXT, 
             descricao TEXT, 
             status_excluido INTEGER DEFAULT 0)'

O próximo trecho de código mostra como gravar o DATETIME atual do sistema usando uma das funções de manipulação de datas do Sqlite:

INSERT INTO conta(datahora, descricao) values(datetime('now'),'Exemplo de texto');

Existem ainda duas outras formas recomendas de trabalhar com datas no Sqlite, que são:

– Usar um campo do tipo REAL e armazenar as datas no formato Juliano.

– Por último, usar um campo do tipo INTEGER para armazenar um valor UNIX TIME, por exemplo.

Os dois últimos tem a vantagem de permitirem comparações entre datas, subtração ou adição, de forma mais simples e direta.

Abaixo alguns links de referência que podem ser bastante úteis na manipulação de datas com Sqlite:

Lista de funções para manipulação de datas
http://www.sqlite.org/lang_datefunc.html

Documentação sobre Datas e outros tipos no Sqlite
http://www.sqlite.org/datatype3.html

Redirecionando entre páginas ou telas com Phonegap

O redirecionamento entre página com Phonegap é bastante simples e totalmente baseado em javascript, abaixo uma função e exemplo de utilização da mesma.

function callAnothePage(path)
{
window.location = path;
}
<a onclick="callAnothePage('tela2.html')" >Tela 2</a>