android - BroadCastReciever. What's wrong in my code? -


code of receiver:

public class onbootreceiver extends broadcastreceiver {      @override     public void onreceive(context context, intent intent) {            try {                 bufferedreader in=new bufferedreader(                         new filereader(mainnote.log));                   string alarmstring;                 int = 0;                   while ((alarmstring = in.readline())!=null)                 {                     long alarmtime = long.parselong(alarmstring.substring(0, alarmstring.indexof(" ")));                     if (alarmtime < system.currenttimemillis()) i++;                     else {                         string alarmarray[] = alarmstring.split("\\s");                         intent alarmintent = new intent(context, alarmreceiver.class);                         if (alarmarray[1].equals("null")) alarmintent.putextra("alarm_message", "");                         else alarmintent.putextra("alarm_message", alarmarray[1]);                         if (alarmarray[2].equals("true"))                         alarmintent.putextra("vibration", true);                         else alarmintent.putextra("vibration", false);                         if (alarmarray[3].equals("true"))                         alarmintent.putextra("sound", true);                         else alarmintent.putextra("sound", false);                           final int _id = (int) system.currenttimemillis();                           pendingintent sender = pendingintent.getbroadcast(context , _id, alarmintent, pendingintent.flag_update_current);                          alarmmanager = (alarmmanager) context.getsystemservice(context.alarm_service);                          am.set(alarmmanager.rtc_wakeup, alarmtime, sender);                     }                 } 

code of alarmreceiver.class

public class alarmreceiver extends broadcastreceiver {   @override  public void onreceive(context context, intent intent) {      bundle bundle = intent.getextras();      string message = bundle.getstring("alarm_message");      boolean vibration = bundle.getboolean("vibration");      boolean sound = bundle.getboolean("sound");      if (message.equals(null))      notifierhelper.sendnotification(context, mainnote.class, context.getresources().getstring(r.string.nottitle), context.getresources().getstring(r.string.nodiscr), 1, sound, true, vibration);      else       notifierhelper.sendnotification(context, mainnote.class, context.getresources().getstring(r.string.nottitle), message, 1, sound, true, vibration);  } } 

manifest:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"       android:versioncode="1"       android:versionname="1.0">     <uses-sdk android:minsdkversion="4" />     <uses-permission android:name="android.permission.vibrate" />        <uses-permission android:name="android.permission.receive_boot_completed" />        <uses-permission android:name="android.permission.write_external_storage" />        <uses-permission android:name="android.permission.wake_lock" />          <application android:icon="@drawable/icon" android:label="@string/app_name">         <activity android:label="@string/app_name" android:name=".mainnote">             <intent-filter>                 <action android:name="android.intent.action.main" />                 <category android:name="android.intent.category.launcher" />             </intent-filter>         </activity>          <activity android:name=".fingerpaint"></activity>     <receiver  android:process=":remote" android:name=".alarmreceiver"></receiver>          <receiver android:name=".onbootreceiver">             <intent-filter>                 <action                       android:name="android.intent.action.boot_completed"/>             </intent-filter>         </receiver>          </application> </manifest> 

mainnote.log can costist example

1304094118826 text true true 

after reboot see process started, dont have notifacation. whats wrong here? , how debug code in onbootreciever?

i replace code in onbootreciever on

intent alarmintent = new intent(context, alarmreceiver.class);         alarmintent.putextra("alarm_message", "blabla");         alarmintent.putextra("vibration", true);         alarmintent.putextra("sound", true);           final int _id = (int) system.currenttimemillis();           pendingintent sender = pendingintent.getbroadcast(context , _id, alarmintent, pendingintent.flag_update_current);          alarmmanager = (alarmmanager) context.getsystemservice(context.alarm_service);          am.set(alarmmanager.rtc_wakeup, system.currenttimemillis()+6000, sender);  

and work. problem in part read information file.

one problem in mainnote.log. log static varible cant contact here. have strange problem -

java.io.filenotfoundexception: /mnt/sdcard/alarmsfromdrawnote.alm (permission denied) com.notedraw.bos.app.onbootreceiver1.onreceive(onbootreceiver1.java:30)  

30th line -

bufferedreader in=new bufferedreader(new filereader(log));  

wtf? (see manifest)

your alarmreceiver needs static broadcastreceiver onbootreceiver in order act on alarm set. unfortunately, don't think can have more 1 static receiver per application (i tried before , did not work me). try putting 2 intent filters on onbootreceiver , have deal both broadcasts.

in onrecieve, check intent.getaction() see broadcast receiving (the boot 1 or alarm), , deal appropriately.


Comments