java - 具有 Manifest 声明的独特 PendingIntent

标签 java android alarmmanager android-pendingintent alarm

我正在创建一个 Android 应用程序,它以编程方式创建警报,该警报在应用程序关闭时持续存在。为了让警报持续存在,我必须在 list 中定义接收器,如下所示:

<receiver
android:name="com.blah.blah.AlarmReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter android:priority="999" >
     <action android:name="com.blah.blah.ALARM" />
</intent-filter>
</receiver>

这是我当前创建 PendingIntents 的方式..

Intent intent = new Intent(ACTION_ALARM);
PendingIntent pIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager manager = (AlarmManager   (this.getSystemService(Context.ALARM_SERVICE ));

由于我使用常量 ACTION_ALARM,所有警报都连接到相同的 PendingIntent,因此调用 .cancel() 会删除所有警报。但是,我想删除特定的警报实例。我知道创建唯一的 PendingIntent 的唯一方法是指定一个唯一的操作,这与我上面在 list 中定义接收器相冲突。还有其他方法可以为我的警报创建可区分的 PendingIntents 吗?我也尝试添加数据,但 list 中的接收器似乎没有被触发。

或者,如果我以编程方式启动每个警报的接收器,是否有办法在应用程序关闭时让这些接收器持续存在?

谢谢。

最佳答案

在这里找到解决方案:How to create different pendingintent so filterEquals() return false?

使用 PendingIntent.getBroadcast 的第二个参数可以建立唯一的 PendingIntent。不需要一个独特的操作,尽管这是我能找到的所有其他帖子所建议的。

现在不知道如何关闭问题...

关于java - 具有 Manifest 声明的独特 PendingIntent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33024931/

相关文章:

java - 如何减去2小时

android - 服务未注册 : android. speech.tts.TextToSpeech

android - 是否有跨平台框架可以访问 Android、iOS 和 Windows Phone 的短信内容?

android - 设置 AlarmManager 的最佳时机/位置

Java - 必须在您的配置中设置主 URL

java - 如何从高度图扰动表面法线

java - 如何更改 JFoenix 拾色器库的 CSS 样式?

android - Android TelecomManager 中的 addIncomingCall 没有做任何事情

android - 在应用程序外部显示模态消息并在一段时间后自行关闭

java - 闹钟管理器不重复?