Boa tarde pessoal preciso de uma mãozinha, sou novo com o desenvolvimento android e estou penando um pouco com algumas coisas,
o que eu estou fazendo no momento é desenvolvendo o layout do aplicativo em html5, css e jquery, na classe principal eu criei o banco,
agora preciso fazer o insert dos dados, mas como fazer para que o jquery(javascript) consiga executar o insert no banco sqlite nativo do
android, pq o ideal é que a aplicação tenha seu próprio banco e quando a pessoa fique online ele atualize os dados de ambos os bancos.
Infelizmente todos os exemplos que achei as pessoas estão usando xml, e eu não estou usando xml e sim html.
fico no aguardo de alguma ajuda e caso ache a resposta antes publico aqui pra vcs!
Via código você consegue interceptar chamadas JavaScripts (inclusive receber e retornar valores), procure por addJavascriptInterface da WebView.
Vai resolver seu problema.
No html você faz chamadas a javascripts como banco.adicionar(nome, telefone) e adiciona pelo codigo Java no SQLite provavelmente. Para consumir a mesma coisa, banco.getAllPessoas().
static class DaoJavascriptListener {
public String adicionar(nome){
//adiciona no banco
return nome;
}
}
onCreate(){
WebView view = findView(R.id.webView);
view.addJavascriptInterface(new DaoJavascriptListener(), "dao");
}
E então toda chamada javascript em “dao” será redirecionada para o objeto criado.
PS: Necessario adicionar keep names no proguard para manter o Listener com os nomes corretos, pois não irão funcionar após obfuscado (já aconteceu comigo).
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");
}
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();
}
}
Mark deu certo, obrigado, é que eu estava testando no chrome tbm e lá não me retorna nada, mas na aplicação no android esta certinho, vlw agora com isso acredito que consiga avançar nos meus estudos aqui… vlw msm pelas dicas!
Ok pessoal desculpe ter começado um novo tópico como entre no fórum muito pouco não sei as regras, ache que a dúvida merecia outro tópico, então minha dúvida é como fazer o insert no banco de dados do android via javascript se puderem dar uma ajuda, ficarei grato.
e desculpe por duplicar o tópico.
E q não esta passando o valor pelo javascript(jquery). eu dei um alert pra saber se esta recuperando o valor dos inputs e até ai blz esta ocorrendo certinho, mas na hora de enviar ao java para fazer o insert no banco do android não esta indo, e tenho certeza que estou fazendo algo errado e precisava de uma mãozinha se possível.
sim agora funcionou, to pegando o jeito de programar em android aos poucos, é que os exemplos que eu achei pela net em sua maioria são todos usando xml então acaba mudando a maneira de se fazer as coisas pelo menos um pouco, mas deu certo sim, agora é criar uma lista com os contatos que estão no banco.
e mais uma vez vlw as dicas marky!!