【发布时间】:2017-11-20 09:06:31
【问题描述】:
我正在制作一个警报应用程序,当用户输入标题和描述时,它会在选定时间显示通知。
我想在intents 中存储两个名为txttitle 和txtdesc 的字符串值,并在通知到达时将它们发送到broadcast-receiver,该通知的标题和描述应该分别是标题和描述字符串值。我已成功发出通知,但没有我需要的标题和描述,类似于 app.support.v7.widget
这是我的代码。
AddNote .java
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());
}
}
但是,唯一的问题是它没有显示标题和描述。
【问题讨论】:
-
尝试将字符串
notMessage.putExtra("TITLE", txtitle.toString().trim());更改为notMessage.putExtra("TITLE", String.valueOf(txtitle.getText()).trim());和“DEC”。
标签: android android-intent broadcastreceiver android-notifications