使用SQL更新多个本地通知

时间:2017-03-26 14:56:20

标签: android sql alarmmanager android-notifications local

Hello目前我已经设置了一个允许用户设置闹钟的应用程序。当此警报到达指定时间时,它将向用户发送通知。现在,每次激活此通知时,它都会发送静态消息,例如“你有通知”。我希望能够将此通知标题更改为我在用户发出警报时存储在SQLOPENHELPER中的警报名称。

我还给每个警报一个特定的ID,这是当前时间(以毫秒为单位),然后将其存储在我的SQL中。现在我知道你需要为每个通知提供一个新的ID,但我该怎么做并将它与我的SQL联系起来?

我附上了一张小图,只是为了澄清我正在做的事情以及我目前的警报和广播接收器......

图................

enter image description here

设置闹钟.....

// 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额外的字符串,它是空白的吗?

2 个答案:

答案 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)

  1. 如下所示更新您的接收方意图以传递Intent receiver = new Intent(getApplicationContext(), Receiver.class); receiver.putExtra("KEY_ALARM_ID", ALARM_ID); // ALARM_ID = id

    PendingIntent.getBroadcast()
  2. ALARM_ID中,使用requestCode作为PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, ALARM_ID, receiver, PendingIntent.FLAG_UPDATE_CURRENT );

    requestCode
  3.   

    始终使用不同的notify()来获取不同的通知   正确的结果。

    1. ALARM_ID方法中,使用id作为notificationManager.notify(ALARM_ID, builder.build());

      id
    2.   

      通知id在您的应用中应该是唯一的。如果一个   您的个人已发布具有相同onReceive()的通知   申请并没有被取消,它将被取代   更新的信息。

      1. 在您的BroadcastReceiver课程ALARM_ID方法中获取@Override public void onReceive(Context context, Intent intent) { int alarmId= intent.getExtras().getInt("KEY_ALARM_ID"); // Do something with alarmId }

        {{1}}
      2. 希望这能解决您的问题。