【问题标题】:How and what to set a pending Intent ID to如何以及如何设置待处理的 Intent ID
【发布时间】:2013-02-09 12:52:55
【问题描述】:

我的应用可以让用户设置约会。这还包括通过在设置的指定约会日期的未决意图触发的警报。当设置的日期到达时,会显示一条祝酒消息,表明今天有约会。

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

这是我的主要问题:

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

当我创建一个新约会时,此自动增加 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();
}

}

【问题讨论】:

    标签: java android android-pendingintent


    【解决方案1】:

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

    或者 System.currentTimeMillis() 真的应该给你你需要的东西。获得 2 个完全相同毫秒的 ID 是非常罕见的。

    【讨论】:

    • 非常感谢您的回复。我目前正在考虑在我的约会数据库中添加一个名为“alarm”的额外列,然后我可以从中添加随机生成的数字并在 ID 中传递值。你能看出这有什么问题吗?
    • 如果您已经有一个数据库,请使用“id”作为行;)它是自动递增的,您将永远不会重复。有时最简单的答案就是最好的答案。如果我的回答有帮助,请不要忘记点赞/复选标记 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    相关资源
    最近更新 更多