Ich versuche, einige Alarme zu machen, nachdem der Benutzer etwas mit einer Zeit aus einer Liste auswählt und eine Benachrichtigung für die angegebene Zeit erstellt. Mein Problem ist, dass der "angezeigteame", dass ein putExtra auf meinem Intent nicht am Broadcast-Empfänger empfangen werden kann. Es wird immer Nullwert erhalten. Dies ist die Art und Weise, wie ich es für die meisten meiner Absichten mache, aber ich denke dieses Mal, vielleicht wegen des pendingIntent oder BroadcastReceivers, muss etwas anders gemacht werden. DankeGetExtra von Intent gestartet von einem pendingIntent
Die Funktion, die die Absicht durch die anhängige Absicht
public void setAlarm(String showname,String time) {
String[] hourminute=time.split(":");
String hour = hourminute[0];
String minute = hourminute[1];
Calendar rightNow = Calendar.getInstance();
rightNow.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hour));
rightNow.set(Calendar.MINUTE, Integer.parseInt(minute));
rightNow.set(Calendar.SECOND, 0);
long t=rightNow.getTimeInMillis();
long t1=System.currentTimeMillis();
try {
Intent intent = new Intent(this, alarmreceiver.class);
Bundle c = new Bundle();
c.putString("showname", showname);//This is the value I want to pass
intent.putExtras(c);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 12345, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, rightNow.getTimeInMillis(),pendingIntent);
//Log.e("ALARM", "time of millis: "+System.currentTimeMillis());
Toast.makeText(this, "Alarm set", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Log.e("ALARM", "ERROR IN CODE:"+e.toString());
}
}
Und das ist das Empfangsende
public class alarmreceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Toast.makeText(context, "Alarm worked.", Toast.LENGTH_LONG).show();
Bundle b = intent.getExtras();
String showname=b.getString("showname");//This is where I suppose to receive it but its null
NotificationManager manger = (NotificationManager) context
.getSystemService(context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.icon,
"TVGuide Υπενθύμιση", System.currentTimeMillis());
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
new Intent(context, tvguide.class), 0);
notification.setLatestEventInfo(context, "Το Πρόγραμμα Ξεκίνησε",
showname, contentIntent);
notification.flags = Notification.FLAG_ONLY_ALERT_ONCE;
notification.sound = Uri.parse("file:///sdcard/dominating.mp3");
notification.vibrate = new long[]{100, 250, 100, 500};
manger.notify(1, notification);
}
}
Dies ist die richtige Antwort ......... – Necronet
+1, das ist die richtige Antwort, sollte es akzeptiert werden.Es ist wirklich nützlich, Thx. (Übrigens können Sie beim Erstellen von ausstehenden Absichten auch einen anderen Anforderungscode verwenden, mit einem Hash, das ist sehr praktisch). – Snicolas