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 | 1089 (952) | marjan_h |
» | Android - ZačetnikOddelek: Programiranje | 1781 (1106) | hurlimannxt |
» | [android] java.lang.RuntimeExceptionOddelek: Programiranje | 1076 (768) | piki12 |
» | [android] vstavljanje slikeOddelek: Programiranje | 1239 (1136) | messi |
» | [android] crashOddelek: Programiranje | 1338 (1147) | messi |