Inserir dados no banco sqlite do android via javascript

2 respostas
E

Tudo bom pessoal? mais uma vez venho pedir uma mãozinha com o android, é o seguinte, estou desenvolvendo um aplicativo simples só pra estudos usando a webview, um layout todo em html css e jquery como todos sabem, a dúvida é a seguinte, como faço para passar o valor do input text que tenho no html para o metodo java insertDB que criei na minha aplicação via javascript(jquery), ainda não consegui achar um exemplo simples para sanar minha dúvida.

o que tenho até agora é isso segue código: android
package Exercicio.exercicio1;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.widget.Toast;

public class MainActivity extends Activity
{
    WebView web;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        web = (WebView)findViewById(R.id.webView);
        
        WebSettings settings = web.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setSupportMultipleWindows(true);
        settings.setSupportZoom(false);
        settings.setPluginsEnabled(true);
        web.setWebChromeClient(new WebChromeClient());
        web.setVerticalScrollBarEnabled(true);
        web.setHorizontalScrollBarEnabled(false);        
        web.loadUrl("file:///android_asset/www/index.html");
        web.addJavascriptInterface(new JavaScriptInterface(this),"MainActivity");
        web.addJavascriptInterface(new Js(), "Android");
        web.addJavascriptInterface(new BancoJS(), "Banco");
        
        BancoJS banco = new BancoJS();
        banco.CriaDB();
                
    } 
    
    public class BancoJS{
        
        String NomeDB = "aula";
        SQLiteDatabase DB = null;
        Cursor cursor;
        
        public void CriaDB(){
            try{
                DB = openOrCreateDatabase(NomeDB, MODE_WORLD_READABLE, null);
                String SQL = "CREATE TABLE IF NOT EXISTS tabPessoa (_id INTEGER PRIMARY KEY AUTOINCREMENT, nome_pessoa TEXT NOT NULL, telefone_pessoa TEXT NOT NULL)";
                DB.execSQL(SQL);
                MensagemAlerta("Banco de dados", "Banco Criado Com Sucesso!");
            }catch(Exception erro){
                MensagemAlerta("Erro Banco de dados", "Não foi possível cria o banco!" + erro);
            }
            finally{
                 DB.close();
             }
        }       
        
        public void insertDB(String nome, String telefone){
            try{
                DB = openOrCreateDatabase(NomeDB, MODE_WORLD_READABLE, null);
                String SQL = "INSERT INTO tabCadastroPessoa(nome_pessoa, telefone_pessoa) VALUES ('"+nome.toString()+","+telefone.toString()+"')";
                DB.execSQL(SQL);
                MensagemAlerta("Banco de dados", "Registro Gravado Com Sucesso!");
            }catch(Exception erro){
                MensagemAlerta("Erro Banco de dados", "Não foi possível gravar o registro!" + erro);
            }
            finally{
                 DB.close();
             }
            
        }

        public void MensagemAlerta(String TituloAlerta, String MensagemAlerta){
            AlertDialog.Builder Mensagem = new AlertDialog.Builder(MainActivity.this);
            Mensagem.setTitle(TituloAlerta);
            Mensagem.setMessage(MensagemAlerta);
            Mensagem.setNeutralButton("OK", null);
            Mensagem.show();

        }
        
    }
    
    public class Js{       
        
        public String getSomeString(){
            return "Holla mundo!";
        }      
        
    }
    
    public class JavaScriptInterface{
        Context mContext;
        JavaScriptInterface(Context c){
            mContext = c;
        }      
       
        public void showToast(String toast){
            Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
        }
    }
    
}
código html
<!DOCTYPE html>
<html>
    <head>
        <title>aplicativo</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        
        <script type="text/javascript" src="js/jquery-1.9.1.min.js" ></script>
        <script type="text/javascript" src="js/general.js"></script>
        <script type="text/javascript" src="js/jquery.mobile-1.3.1.js" ></script>
        
        <link rel="stylesheet" href="css/jquery.mobile.structure-1.3.1.min.css" type="text/css" /> 
        <link rel="stylesheet" href="css/style.css" type="text/css">
        <style type="text/css">
            
        </style>
    </head>
    <script type="text/javascript">
            
    </script>
    <body>
        <div data-role="page" id="page" data-theme="e">
            <div data-role="header">
                <h1>Cabeçalho</h1>
            </div>         
        
            <div data-role="content">                
                <label>seu nome:</label>
                <input type="text" name="nome" id="nome"/><br/>
                <label>seu telefone:</label>
                <input type="text" name="telefone" id="telefone"/>
                
                <input type="button" data-theme="b" id="btn" value="aperte"/> 
                <input type="button" data-theme="b" id="btn_2" value="outra coisa" onClick="alert(Android.getSomeString());"/>
            </div>  
            
            <div id="clear"></div>
            <div data-role="footer">
                <footer>
                    Rodapé
                </footer>
            </div>
        </div>
    </body>
</html>
e código js
$(document).ready(function(){   
    
    $("#btn").click(function(){
        var nome = $("#nome").val();
        var telefone = $("#telefone").val();
        alert("olá, "+nome+" "+telefone);
        insertBanco( nome, telefone);
    });  
    $("#btn_2").click(function(){
        alert(teste());
    });
    
});

function insertBanco(){
    Banco.insertDB();
}

function mensagemBanco(){
    return Banco.MensagemAlerta();
}

function teste() {
    return Android.getSomeString();
}

Se puderem dar umas dicas e alguns exemplos simples e práticos ficarei muito agradecido e postarei o código aqui para outras pessoas que também tenham essa dúvida em relação ao android.

2 Respostas

V

Cara para de duplicar tópicos.

Marky.Vasconcelos

Por favor, continue suas duvidas no topico antigo.

Criado 19 de julho de 2013
Ultima resposta 19 de jul. de 2013
Respostas 2
Participantes 3