Forum » Programiranje » [Android] OnReceive problem
[Android] OnReceive problem

shadeX ::
Ta koda bere neprebrane SMS-je iz SMS content providerja.
Koda deluje vredu. Ampak problem nastane ko registriram SMS broadcast receiver ( posluša na prihajajoče SMSje ). Se pravi kadar pride SMS na telefon, se izvšri zgornja koda. Problem je ker mi vedno pokaže število SMSjev "x-1" ( to samo v kodi onReceive ). Jaz smatram da zato ker mogoče ni bil še zapis narejen (o novem sporočilu) , v content provider kadar pride broadcast intent o prihajajočem SMSju.
Kako bi lahko zadevo rešil, da bi tudi na "onReceive" pokazalo pravilno število SMSjev ?
public void checkUnreadSms() {
numberOfUnreadSms = 0; // static variable
resolver = context.getContentResolver();
uri = Uri.parse("content://sms/inbox");
projection = null;
selection = "read = 0";
selectionArgs = null;
sortOrder = null;
cursor = resolver.query(uri, projection, selection, selectionArgs, sortOrder);
cursor.moveToFirst();
numberOfUnreadSms = cursor.getCount();
}Koda deluje vredu. Ampak problem nastane ko registriram SMS broadcast receiver ( posluša na prihajajoče SMSje ). Se pravi kadar pride SMS na telefon, se izvšri zgornja koda. Problem je ker mi vedno pokaže število SMSjev "x-1" ( to samo v kodi onReceive ). Jaz smatram da zato ker mogoče ni bil še zapis narejen (o novem sporočilu) , v content provider kadar pride broadcast intent o prihajajočem SMSju.
Kako bi lahko zadevo rešil, da bi tudi na "onReceive" pokazalo pravilno število SMSjev ?
- spremenil: shadeX ()
Kocka ::
Jaz bi poskusil s ContentObserver-jem, ki bi se trigal takrat, ko se spremeni "content://sms".
Registriraš ga nekako takole:
smsContentObserver = new ContentObserver( new Handler());
contentResolver.registerContentObserver(Uri.parse("content://sms"), true, smsContentObserver);
ter v smsContentObserver overridaš funkcijo onChange();
"content://sms/inbox" menda ne triga, je treba uporabiti kar "content://sms" in potem v onChange funkciji gledati spremembe.
Registriraš ga nekako takole:
smsContentObserver = new ContentObserver( new Handler());
contentResolver.registerContentObserver(Uri.parse("content://sms"), true, smsContentObserver);
ter v smsContentObserver overridaš funkcijo onChange();
"content://sms/inbox" menda ne triga, je treba uporabiti kar "content://sms" in potem v onChange funkciji gledati spremembe.
Vredno ogleda ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | [Android] Bluetooth aplikacijaOddelek: Programiranje | 1236 (1099) | marjan_h |
| » | Android - ZačetnikOddelek: Programiranje | 1960 (1285) | hurlimannxt |
| » | [android] java.lang.RuntimeExceptionOddelek: Programiranje | 1198 (890) | piki12 |
| » | [android] vstavljanje slikeOddelek: Programiranje | 1399 (1296) | messi |
| » | [android] crashOddelek: Programiranje | 1531 (1340) | messi |