Hello目前我已经设置了一个允许用户设置闹钟的应用程序。当此警报到达指定时间时,它将向用户发送通知。现在,每次激活此通知时,它都会发送静态消息,例如“你有通知”。我希望能够将此通知标题更改为我在用户发出警报时存储在SQLOPENHELPER中的警报名称。
我还给每个警报一个特定的ID,这是当前时间(以毫秒为单位),然后将其存储在我的SQL中。现在我知道你需要为每个通知提供一个新的ID,但我该怎么做并将它与我的SQL联系起来?
我附上了一张小图,只是为了澄清我正在做的事情以及我目前的警报和广播接收器......
图................
设置闹钟.....
// id - 与该警报的自定义ID相关 //接收者 - 是我们的意图
pendingIntent = PendingIntent.getBroadcast(v.getContext(), id, receiver, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, myCalendar.getTimeInMillis(), pendingIntent);
// Intent数组列表用于存储多个警报
intentArrayList.add(pendingIntent);
广播接收器......
NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
Intent moveActivity = new Intent(context, AlarmActivity.class);
moveActivity.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// Works with moveActivity to move the user back to main application.
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, moveActivity, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setContentIntent(pendingIntent)
.setContentTitle("title")
.setContentText("text")
.setSmallIcon(R.mipmap.ic_launcher)
.setAutoCancel(true);
notificationManager.notify(0, builder.build());
//通知ID已经保留为0,因为我不知道该做什么,在尝试弄清楚它2天之后,我想我应该问。
////更新 主要活动
我已在我的意图数组列表
下实现了一个额外的put receiver.putExtra("title", id);
广播
Bundle bundle = intent.getExtras();
if (bundle != null) {
pass = bundle.getString("title");
//I have put my notification in this section
}
我通过输入“pass”来测试它,这是用于检索我的通知标题中的put额外的字符串,它是空白的吗?
答案 0 :(得分:0)
//主要活动
receiver.putExtra("title", id);
pendingIntent = PendingIntent.getBroadcast(v.getContext(), id, receiver, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, myCalendar.getTimeInMillis(), pendingIntent);
intentArrayList.add(pendingIntent);
广播
Bundle bundle = intent.getExtras();
int pass = bundle.getInt("title" , 1);
感谢psKink你给了我需要的踢法
答案 1 :(得分:0)
如下所示更新您的接收方意图以传递Intent receiver = new Intent(getApplicationContext(), Receiver.class);
receiver.putExtra("KEY_ALARM_ID", ALARM_ID); // ALARM_ID = id
:
PendingIntent.getBroadcast()
在ALARM_ID
中,使用requestCode
作为PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, ALARM_ID, receiver, PendingIntent.FLAG_UPDATE_CURRENT );
。
requestCode
始终使用不同的
notify()
来获取不同的通知 正确的结果。
在ALARM_ID
方法中,使用id
作为notificationManager.notify(ALARM_ID, builder.build());
:
id
通知
id
在您的应用中应该是唯一的。如果一个 您的个人已发布具有相同onReceive()
的通知 申请并没有被取消,它将被取代 更新的信息。
在您的BroadcastReceiver课程ALARM_ID
方法中获取@Override
public void onReceive(Context context, Intent intent)
{
int alarmId= intent.getExtras().getInt("KEY_ALARM_ID");
// Do something with alarmId
}
:
{{1}}
希望这能解决您的问题。