Android notification Vorsatz mit extras ist immer null
Ich entwickle eine app, erstellen Sie mehrere Alarme und die Alarme senden von Benachrichtigungen an den Benutzer, so können Sie auf die Benachrichtigung Tippen und das führt zu einer Aktivität, mit der alarm-details, die ich anzeigen möchten, je nach dem Wert der extras, aber meine extras sind immer null, ich verstehe nicht, was es ist falsch.. ich such schon eine Menge Fragen, und nichts scheint mein problem zu lösen.
Dies ist, wo ein erstellen Sie den alarm mit einer eindeutigen id jeder. "posten.getID()"
NewAlarm.java
firstTime = System.currentTimeMillis();
intervalTime = (1000 * 60 * 4); //4 minutes
//crear el pending intent y la alarma
Intent intent = new Intent(this, AlarmBroadcastReceiver.class);
intent.putExtra("ID", item.getID());
intent.putExtra("MEDICINA", item.getMedicina());
PendingIntent pendingIntent = PendingIntent.getActivity(this, item.getID(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Activity.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, firstTime, intervalTime, pendingIntent);
AlarmBroadcastReceiver.java
public void onReceive(Context context, Intent intent) {
try {
int notifID = intent.getExtras().getInt("ID");
String medicina = intent.getExtras().getString("MEDICINA");
Intent alarmDetailsIntent = new Intent(context, AlarmDetails.class);
alarmDetailsIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("ID", notifID);
intent.putExtra("MEDICINA", medicina);
PendingIntent piDetails = PendingIntent.getActivity(context, notifID, alarmDetailsIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder mbBuilder = new NotificationCompat.Builder(context);
mbBuilder.setSmallIcon(R.drawable.ic_menu_my_calendar);
mbBuilder.setContentTitle("Medic Reminder");
mbBuilder.setContentText(medicina);
mbBuilder.setVibrate(new long[]{100, 250, 100, 500});
mbBuilder.setContentIntent(piDetails);
notificationManager.notify(notifID, mbBuilder.build());
}catch (Exception ex){
ex.printStackTrace();
}
}
und wenn der Benutzer klickt auf die Benachrichtigung, wird die Aktivität geöffnet und zeigt die details für den alarm mit der ID extra, aber getIntent.getExtras() immer NULL ist.
AlarmDetails.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recordatorio_alarma);
Bundle extras = getIntent().getExtras();
if (extras != null){
try {
int notifID = extras.getInt("ID");
String medicina = extras.getString("MEDICINA");
TextView txtMedicina = (TextView) findViewById(R.id.txtMedicinaAlarma);
txtMedicina.setText("Medicina de prueba");
Button btnCerrar = (Button) findViewById(R.id.btnStopAlarm);
btnCerrar.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
notificationManager.cancel(notifID);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du willst getStringExtra(), nicht getExtras().getString(). Kümmert sich um den Fall, wo man keine extras noch.
Bundle extras = getIntent().getExtras();
int notifID = extras.getInt("ID");
String medicina = extras.getString("MEDICINA");
fand ich meine Fehler!
werden müssen: