如何以及如何设置待处理的Intent ID

时间:2013-02-09 12:52:55

标签: java android android-pendingintent

我的应用可以让用户设置约会。这还包括通过约定的指定日期的待定意图触发的警报。当设置日期到来时,会显示一个Toast消息,表明今天有约会。

用户还可以编辑他们的约会,这包括能够打开和关闭闹钟(通过使用切换按钮)我希望能够在他们关闭闹钟时取消待处理的意图。这显然意味着我需要依赖一个唯一的ID。

这是我的主要问题:

设置ID的最佳方法是什么?我没有可以设置的真正“独特”值,我看到人们将“当前时间”设置为ID,然后将其添加为EXTRA但是如果我有两个待定意图警报完全相同的时间怎么办? < / p>

当我创建一个新的约会时,这个自动递增ID,并且字面上会设置一个未与该用户“绑定”的待定意图警报。

这是我当前的未决意图代码:

AlarmManager dateSet = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, DateAlarm.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
    dateSet.set(AlarmManager.RTC_WAKEUP, setDate.getTime(), pendingIntent); 

警报类:

package com.example.flybase2;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.Toast;

public class DateAlarm extends Activity {

Context context;
@SuppressWarnings("static-access")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    context = this;
    Toast newToast = new Toast(getApplicationContext());
    newToast.setGravity(Gravity.FILL, 0, 0);
     newToast.makeText(context, "Appointment is today", Toast.LENGTH_LONG).show();
}

}

1 个答案:

答案 0 :(得分:3)

生成一个随机数并将其用作您的唯一ID。将该号码存储在SharePreferences或sqlite数据库中。这也使得能够在设备重启之间保持警报。

或System.currentTimeMillis()真的应该给你你需要的东西。你很难获得两个完全相同毫秒的ID。