Ich mache eine Alarm-App und wenn Benutzer den Titel und die Beschreibung eingeben, wird eine Benachrichtigung zur ausgewählten Zeit angezeigt. Ich möchte zwei String-Werte mit den Namen txttitle
und txtdesc
in intents
speichern und sie in broadcast-receiver
senden, wenn eine Benachrichtigung eingeht, sollten der Titel und die Beschreibung dieser Benachrichtigung die Titel- bzw. Beschreibungszeichenfolgenwerte sein. Ich habe erfolgreich die Benachrichtigung ausgegeben, aber es gibt keinen Titel und eine Beschreibung, die ich brauche, es ist so etwas wie app.support.v7.widget
Hier ist mein Code.
AddNote.javaÜbertragen von Daten von der Aktivität zum BroadCast-Empfänger
public class AddNote extends AppCompatActivity {
int mHour, mMin, hour , min, mYear, mMonth, mDay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_note);
final CheckBox chckRem = (CheckBox) findViewById(R.id.cHcRem);
final Button btnOk = (Button) findViewById(R.id.bTok);
chckRem.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (chckRem.isChecked()){
/** It is checked*/
// Get Current Date
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(AddNote.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
final int day = dayOfMonth;
final int yer = year;
final int month = monthOfYear;
/** LAUNCH THE TIMEPICKER*/
Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMin =c.get(Calendar.MINUTE);
/** LAUNCH THE TIMEPICKER*/
// Launch Time Picker Dialog
TimePickerDialog timePickerDialog = new TimePickerDialog(AddNote.this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
/**tHIS*/
hour = hourOfDay;
min = minute;
int sec = 0;
Calendar cl = Calendar.getInstance();
cl.setTimeInMillis(System.currentTimeMillis());
cl.clear();
cl.set(yer, month, day, hour, min);
EditText txtitle = (EditText) findViewById(R.id.tTit);
EditText txtdesc = (EditText) findViewById(R.id.tDet);
Intent notMessage = new Intent(getApplicationContext(), NotificatioRec.class);
notMessage.putExtra("TITLE", txtitle.toString().trim());
notMessage.putExtra("DEC", txtdesc.toString().trim());
PendingIntent pi = PendingIntent.getBroadcast(AddNote.this, 0, notMessage, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cl.getTimeInMillis(), pi);
Toast.makeText(AddNote.this, "Reminder Added", Toast.LENGTH_SHORT).show();
}
}, mHour, mMin, false);
timePickerDialog.show();
}
}, mYear, mMonth, mDay);
datePickerDialog.show();
}
}
});
btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
TextoDatabaseHelper textoDatabaseHelper = new TextoDatabaseHelper(AddNote.this);
SQLiteDatabase db = textoDatabaseHelper.getReadableDatabase();
Calendar calend = Calendar.getInstance();
int YEAR = calend.get(Calendar.YEAR);
int MONTH = calend.get(Calendar.MONTH);
int DAY = calend.get(Calendar.DAY_OF_MONTH);
String date = DAY + "-" + MONTH + "-" + YEAR;
EditText txt_title = (EditText) findViewById(R.id.tTit);
String Title = txt_title.getText().toString().trim();
EditText txt_Desc = (EditText) findViewById(R.id.tDet);
String Desc = txt_Desc.getText().toString().trim();
insertNote(db, Title, Desc, date);
Toast.makeText(AddNote.this, "Note Added" , Toast.LENGTH_SHORT).show();
AddNote.this.finish();
}catch (SQLException e){
Toast.makeText(AddNote.this, "Can't add a new note! Try again.", Toast.LENGTH_SHORT).show();
}
}
});
}
public static void insertNote(SQLiteDatabase db, String title, String desc, String date){
ContentValues Notes = new ContentValues();
Notes.put("TITLE", title);
Notes.put("DESCRIPTION", desc);
Notes.put("DATE", date);
db.insert("NOTES", null, Notes);
}
}
NotificatioRec.java
public class NotificatioRec extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String title = intent.getStringExtra("TITLE");
String desc = intent.getStringExtra("DESC");
PendingIntent contentIntent = PendingIntent.getActivity(context, 0 , new Intent(context, MainActivity.class), 0);
NotificationCompat.Builder mBuilder= new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.logo)
.setContentTitle(title).setContentText(desc);
mBuilder.setContentIntent(contentIntent);
mBuilder.setDefaults(Notification.DEFAULT_SOUND);
mBuilder.setCategory(Notification.CATEGORY_ALARM);
mBuilder.setAutoCancel(true);
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, mBuilder.build());
}
}
Allerdings ist das einzige Problem, dass es nicht den Titel und die Beschreibung nicht zeigen.
Versuchen Sie den String 'notMessage.putExtra 'zu ändern (" TITLE ", txtitle.toString(). Trim());' zu 'notMessage.putExtra (" TITLE ", String.valueOf (txtitle.getText()). Trim()) ; 'und auch für" DEC ". – fishbone