>
Boa tarde pessoal,
Estou tentando usar um openOrCreateDatabase em uma classe que não extende ActionBarActivity, e simplesmente de forma alguma funciona, o e sempre quando faz o import gera dessa maneira: import android.database.sqlite.SQLiteDatabase;
Dessa forma quando é executado, gera o seguinte erro:
[quote]28767-28780/br.cooper.system.checklist:remote E/SQLiteLog? (14) cannot open file at line 30191 of [00bb9c9ce4]
03-19 17:25:02.947 28767-28780/br.cooper.system.checklist:remote E/SQLiteLog? (14) os_unix.c:30191: (2) open(//checklist_sincronizacao.db) -
03-19 17:25:02.947 28767-28780/br.cooper.system.checklist:remote E/SQLiteDatabase? Failed to open database checklist_sincronizacao.db.
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:709)
at Funcoes.SincronizaRespostas.sincoriza(SincronizaRespostas.java:100)
at br.cooper.system.checklist.ReplicarCheckLists$1.run(ReplicarCheckLists.java:63)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at br.cooper.system.checklist.ReplicarCheckLists.run(ReplicarCheckLists.java:99)
at java.lang.Thread.run(Thread.java:841) [/quote]
SQLiteDatabase sqlII = SQLiteDatabase.openOrCreateDatabase("checklist_sincronizacao.db",null);
ContentValues ctvSincronizacao = new ContentValues();
ctvSincronizacao.put("placa",placaNumero);
ctvSincronizacao.put("status",2);
sqlII.insert("checklist_sincronizacao","_id",ctvSincronizacao);
Ola Josivan
Olha eu faco assim... openOrCreateDatabase("test", MODE_PRIVATE, null);
kd o teu MODE_PRIVATE??
Então André, como eu so consigo declarando SQLiteDatabase.openOrCreateDatabase() o MODE_PRIVATE não é aceito nessa situação, é como se o import estivesse pegando uma outra classe e eu estivesse trabalhando com outro objeto.
Em classes que eu consigo estender de ActionBarActivity eu passo assim:
SQLiteDatabase sqlSincronizado = openOrCreateDatabase("checklist_resposta.db",Context.MODE_PRIVATE, null);
Cursor cursorR = sqlSincronizado.rawQuery("select placanumero from checklist_resposta group by placanumero",null);
tbm tem assim
openOrCreateDatabase("Android",Context.MODE_PRIVATE,null);
vc esta usando actionbarsherlock???
Não André, não estou usando nenhuma API, alias, somente a KSOAP2.
No caso do exemplo acima, não precisa declarar o SQLiteDatabase? Somente invoca o openOrCreateDatabase?
Obrigado!
André, se eu colocar na classe que é chamada por uma Thread por um serviço ocorre quando executa a abertura de um banco ocorre o seguinte erro:
[quote]println needs a message[/quote]
Quando executa a primeira linha, no caso a abertura do banco:
SQLiteDatabase sqlII = openOrCreateDatabase("checklist_sincronizacao.db",Context.MODE_PRIVATE, null);
ContentValues ctvSincronizacao = new ContentValues();
ctvSincronizacao.put("placa",placaNumero);
ctvSincronizacao.put("status",2);
sqlII.insert("checklist_sincronizacao","_id",ctvSincronizacao);
Ola josivan ..
vc pode colocar essa classe aki p gente analisar??
Boa tarde,
André, desculpe a demora, mas só consegui voltar a trabalhar no sistema agora.
Consegui fazer funcionar, na verdade mudei a logica, criei uma função e chamo ela, então está funcionando!
Agora tenho um outro problema, na verdade uma situação, toda primeira vez que eu executo um serviço ele roda perfeitamente, ai eu faço apos a ação de executar o serviço para voltar em uma tela, e funciona perfeitamente tbm, mas quando executo esse tela que chama o serviço novamente, não roda mais, tenho que sair do sistema, e abrir novamente, ai volta a executar (no caso volta a ser a primeira vez...)
Intent intent = new Intent("br.cooper.system.checklist.ReplicarCheckLists") ;
this.startService(intent) ;
android:exported="true"
android:process=":remote">
Ola Josivan..
vc esta usando essa service so no oncreate da sua activity??
André, eu estou usando em um onClick de um botão, mas esse botão está no onCreate sim
Segue o código:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lista_check_list);
Button btnFinaliza = new Button(this);
btnFinaliza.setText("Finalizar CheckList");
btnFinaliza.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (verificaDados()){
finalizaCheckList();
Toast.makeText(getBaseContext(), "Finalizado com Sucesso", Toast.LENGTH_LONG);
Intent it = new Intent(getBaseContext(), MainSelecionaPlaca.class);
it.putExtra("handle_usuario",handle_usuario);
startActivity(it);
finish();
try {
this.finalize();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
} else {
Toast.makeText(view.getContext(), "Necessário preencher todos os campos!", Toast.LENGTH_LONG);
}
}
});
public void finalizaCheckList(){
Intent intent = new Intent("br.cooper.system.checklist.ReplicarCheckLists") ;
this.startService(intent) ;
}
}
Josivan...
posta a classe service, porfavor ??
Opa,
Segue a classe:
http://rlsystem.com.br/forum/disco/uploads/142bc02ad939ee56ead65fa03025a4fd-classe_services.zip
Não sei pq, mas nunca consigo postar um codigo inteiro, sempre dá erro na hora de gravar!
Josivan
coloca stopSelf();
depois de Looper.loop();
André, fiz como voce postou, porém não resolveu, não executa nada, fazendo os testes do Logcat, quando executa fica assim:
[quote]03-28 09:24:11.871 11973-11973/br.cooper.system.checklist:remote D/RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR%uFE55 1111111
03-28 09:24:12.051 11973-11998/br.cooper.system.checklist:remote D/dalvikvm%uFE55 GC_FOR_ALLOC freed 250K, 3% free 9307K/9592K, paused 17ms, total 17ms
03-28 09:24:12.462 605-620/? I/ActivityManager%uFE55 Displayed br.cooper.system.checklist/.MainSelecionaPlaca: 640ms
03-28 09:24:12.482 605-1012/? I/WindowManager%uFE55 Switching to real app window: Window{42e7a168 u0 br.cooper.system.checklist/br.cooper.system.checklist.MainSelecionaPlaca}
03-28 09:24:12.732 806-806/? D/dalvikvm%uFE55 GC_FOR_ALLOC freed 2002K, 29% free 11579K/16296K, paused 27ms, total 27ms
03-28 09:24:12.732 806-806/? I/dalvikvm-heap%uFE55 Grow heap (frag case) to 13.073MB for 1818640-byte allocation
03-28 09:24:12.752 11973-11998/br.cooper.system.checklist:remote D/dalvikvm%uFE55 GC_FOR_ALLOC freed 527K, 6% free 9292K/9852K, paused 13ms, total 13ms
03-28 09:24:12.772 806-816/? D/dalvikvm%uFE55 GC_FOR_ALLOC freed 1K, 19% free 13353K/16296K, paused 42ms, total 42ms
03-28 09:24:12.802 806-810/? D/dalvikvm%uFE55 GC_CONCURRENT freed 1K, 19% free 13353K/16296K, paused 3ms 2ms, total 29ms
03-28 09:24:13.523 28397-28401/? D/dalvikvm%uFE55 GC_CONCURRENT freed 392K, 13% free 10477K/11956K, paused 3ms 2ms, total 49ms
03-28 09:24:13.583 28397-28713/? I/GCoreUlr%uFE55 Successfully inserted location
03-28 09:24:13.583 28397-28713/? I/GCoreUlr%uFE55 Not calling LocationReportingService, hasMoved: false, elapsed millis: 541577, request: Phone
[/quote]
Se perceber a primeira linha, é onde eu faço o teste antes do serviço ser executado, ou seja, está passando
Agora na segunda vez, ocorre o seguinte log:
[quote]03-28 09:25:01.264 605-620/? I/ActivityManager%uFE55 Displayed br.cooper.system.checklist/.MainSelecionaPlaca: 744ms
03-28 09:25:01.314 605-14685/? I/WindowManager%uFE55 Switching to real app window: Window{42e35b38 u0 br.cooper.system.checklist/br.cooper.system.checklist.MainSelecionaPlaca}
03-28 09:25:01.514 806-806/? D/dalvikvm%uFE55 GC_FOR_ALLOC freed 1996K, 29% free 11583K/16296K, paused 38ms, total 38ms
03-28 09:25:01.514 806-806/? I/dalvikvm-heap%uFE55 Grow heap (frag case) to 13.077MB for 1818640-byte allocation
03-28 09:25:01.534 806-816/? D/dalvikvm%uFE55 GC_FOR_ALLOC freed 4K, 19% free 13354K/16296K, paused 27ms, total 27ms
03-28 09:25:01.564 806-810/? D/dalvikvm%uFE55 GC_CONCURRENT freed <1K, 19% free 13354K/16296K, paused 1ms 5ms, total 30ms[/quote]
Pelo que dá a entender, não chega nem a executar o serviço
Obrigado
Ola josivan
agora q eu reparei.. na tua classe service naum tem o onStart()
veja este site ...
http://inchoo.net/mobile-development/android-development/android-simple-service/