2012-04-10 11 views
1

Ich habe versucht, Benachrichtigungen zum Starten auf Android zur richtigen Zeit zu erhalten. Ich möchte, dass sie in der Zukunft 2 Minuten nach dem Start der App ausgehen. Wenn ich es hier arbeiten lassen kann, kann ich es leicht dort hinbringen, wo ich es wirklich tun muss. Die Protokolle zeigen, dass die erforderlichen Codezeilen ausgeführt werden, die Benachrichtigung jedoch nie gestartet wird. Ich bin über 8 Stunden damit beschäftigt, das zu debuggen und nirgendwo hin zu kommen. Jede Hilfe wäre großartig. HierAndroid-Benachrichtigung mit Alarm-Manager funktioniert nicht

ist die Erinnerung Code, den ich erstellt haben:

final PendingIntent pi = PendingIntent.getBroadcast(this.mContext, 
      0, 
      i, 
      PendingIntent.FLAG_ONE_SHOT); 

    TimeZone timeZone= TimeZone.getDefault(); 
    Calendar time= Calendar.getInstance(timeZone); 
    time.add(Calendar.MINUTE, 2); 

    this.mAlarmManager.set(AlarmManager.RTC_WAKEUP, 
      time.getTimeInMillis(), 
      pi); 

    Log.d ("setReminder",time.getTime().toLocaleString()); 

Jetzt unten ist mein OnAlarmRecieve Code, der nie 2 Minuten später läuft nach den Protokollen. Die Klasse erstreckt sich BroadcastReceiver

@Override 
public void onReceive(final Context context, 
     final Intent intent) { 
    Log.d(TAG, "Recieved wake up cal from Alarm Manger"); 


    final String tableName = intent.getStringExtra(IntentExtraStringStorage.TABLE_NAME); 
    final long rowID = intent.getLongExtra(IntentExtraStringStorage.ROW_ID, 
      -1); 
    final String titleString = intent.getStringExtra(IntentExtraStringStorage.NOTIFICATION_TITLE); 
    final String notificationString=intent.getStringExtra(IntentExtraStringStorage.NOTIFICATION_NOTE); 

    WakeUpReminderIntentService.acuireStaticLock(context); 

    /*if (tableName== Task.TABLE_NAME) { 
     launchTaskView(context, rowID); 
    } 
    else { 
     Log.e (TAG, "Did not Launch"); 
     Toast.makeText(context, "Did not work right", Toast.LENGTH_SHORT).show(); 
    }*/ 
    Intent i = new Intent (context, ReminderService.class); 
    i.putExtra("taskID", rowID); 
    i.putExtras(intent.getExtras()); 
    Log.d(TAG, "Launched task"); 
    //TODO Added code to build the screen correctly 
    //FIXIT this need to be finished. 
    context.startService(i); 
}]= 
+0

Keine Ahnung, ob es Ihr Problem ist oder nicht, aber ich hatte ein ähnliches Problem und es stellte sich heraus, dass onReceive() aufgerufen wurde, sobald OnReceive() und damit Code zurückgegeben wurde das hätte laufen sollen, nachdem onReceive() zurückgegeben wurde, würde nicht ausgeführt werden. Meine Lösung bestand darin, PowerManager.userActivity() innerhalb von onReceive() aufzurufen, um das Gerät vollständig wach zu setzen. –

+0

Als Referenz finden Sie unter: http://StackOverflow.com/Questions/9650974/How-to-Programatics-dismiss-the-screensaver-lock-screen-on-android-nook-simp und/oder https: // github. com/jfriesne/Electric-Sign/blob/Master/src/com/sugoi/electricsign/ElectricSignActivity.java –

+0

Problem, das ich habe, ist es scheint, wie die onReceive() nie überhaupt überhaupt läuft. Muss ich sicherstellen, dass dem Manifest etwas hinzugefügt wird, um sicherzustellen, dass es passiert? – Timeless

Antwort

1

Ich habe mein Problem gefunden. Es stellte sich heraus, dass ich den OnAlarmReceiver im Mainfest nicht als Empfänger eingestellt habe. Auch benötigt, um eine andere Sache in die Dienste zu bringen.

Zeichnen Sie zurück, um neu zu sein für die Entwicklung sind so viele kleine Dinge.