如何创建不同pendingintent所以filterEquals()返回false?

我AlarmManager设置重复的意图,但它有一点trouble所以希望有人可以帮助。 总结 有2个正在申请的意图.a个运行在1000和其他每天跑2000.each包含从数据库中以供识别之行ID。该代码如下所示:

Intent i = new Intent(mContext, ScheduleReceiver.class);
i.putExtra(RuleDBAdapter.KEY_ROWID, (int)taskId);
PendingIntent pi =PendingIntent.getBroadcast(...);
mAlarmManager.set(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), pi);

删除: 问题是,当我们需要删除其中之一。正确的方法来删除一个挂起的意图是建立一个相同的一个,然后调用从AlarmManager取消。 Android的 公共无效取消(PendingIntent操作) 删除与匹配的意图任何警报。任何报警的任何类型,其意图匹配这一个(由filterEquals(意向)的定义),将被取消。 公共布尔filterEquals(意向除外) 确定两个意图是为意图分辨率(过滤)的目的。也就是说,如果他们的行动 CodeGo.net,数据,类型,级别和类别都是这并不包含在意向任何额外的数据。 所以在上面的例子,如果我做一个相同的意图再取消,上述两种意图将被取消,他们是从类/动作等(除了“额外”的数据,但ROWIDfilterEquals不关心额外的数据)。 有什么解决方法吗?

1. 你可以在requestCode创建挂起的意图时:

PendingIntent pi =PendingIntent.getBroadcast(mContext, yourUniqueDatabaseId,i,PendingIntent.FLAG_ONE_SHOT);

这将创建一个Intent是唯一匹配的目的..

2. 公共布尔filterEquals(意向等)进行比较的动作,数据,类型,封装,组件和类,但做多余的,所以actor之间的差别不能区分意图。尝试不同的数据集 CodeGo.net,这些意图,该数据可能是微不足道的尤里斯。 尝试阅读源代码来获得

3. 试图把一个虚拟行动的意图。 例如:。

myIntent.setAction(""+System.currentTimeMillis());

这将filterEquals返回false。 我需要一个类似的解决方案从多个号码发送短信通知, 为了使通知到启动的短信螺纹观众的不同的号码。

4. 把任务ID和进入意向的作用。这样一来,你的挂起意图与任务相关联的id和意图仍然会在不同的过滤条件。

intent.setAction("ACTION_" + taskId + "_" + currentTimestamp);

5. 在我的情况,我没有一个很好的方法来生成一个唯一的密钥为我挂起的意图所以我所做的就是自定义的数据添加到生成的意图。 一旦你开始填充数据属性,你必须给一个数据添加到意图过滤器在Android清单。如果你不这样做,将不会触发您的自定义接收器。 示例: 意图

Intent intent = new Intent(reminderFire);
intent.addCategory(reminderCategory);
Uri.Builder builder = new Uri.Builder();
builder.scheme(context.getString(R.string.scheme));
builder.authority(context.getString(R.string.intent_filter_reminder_host));
builder.appendQueryParameter("oid", Reminder.getOid());
intent.setData(builder.build());

AndroidManifest入口

<receiver
 android:name=".client.MyReminder"
 android:enabled="true"
>
 <intent-filter>
  <action android:name="com.example.client.reminder.fire"/>
  <action android:name="com.example.client.reminder.category"/>
  <data
   android:host="@string/intent_filter_reminder_host"
   android:scheme="@string/scheme" />
 </intent-filter>
</receiver>

通过这样做,你也可以在意向测试的唯一性,然后才会慢慢增加一条,作为一个挂起的意图,而如果你的单元测试。

时间: 2024-10-27 07:01:16

如何创建不同pendingintent所以filterEquals()返回false?的相关文章

Linux 文件上传时无法创建新路径,mkdirs也返回false。

web项目,文件上传到linux服务器时无法创建新路径,java.io.File 不会自动创建路径,手动mkdirs也是返回false,检查了所有代码,没发现问题. 经同事提醒,linux中的tomcat服务使用的用户是tomcat,而目标路径portalFiles 的所有者是root,所以无权在目标路径创建子路径. 使用 chown -R tomcat:tomcat portalFiles 递归修改portalFiles 路径下的所有者.

php curl返回false----curl调用微信创建自定义菜单返回false

在调用微信公众平台的创建自定义菜单接口来创建自定义菜单时遇到一个大坑,php curl返回false一直无法调试通过,代码如下: > //创建菜单public function menu_create($data){$url =" https://api.weixin.qq.com/cgi-bin/menu/create?access_token={$this->get_access_token()}";echo $url.'----------<br>'; r

yii2 设置的缓存无效,返回false,不存在

为了那些因为标题点进来的小伙伴,我直接把问题解决方案写在开头: 问题描述, $cache->add($key,'value',1800);这样设置了值后,后面无论怎么取这个$key,取出来的结果都是false, 使用$cache->exit ,也显示不存在 原因:因为我在设置$key的时候,使用的$key = time();经过测试yii2的缓存,是不能使用纯数字的键,最后使用了$key = 'name'.$key:就好了 数据缓存 数据缓存是指将一些 PHP 变量存储到缓存中,使用时再从缓存

FtpClient.storeFile返回false解决方法

参考:http://www.cnblogs.com/xiangpiaopiao2011/archive/2012/02/28/2371679.html 返回错误:ftp connect time out. 先判断是否登录成功,若登录成功之后FtpClient.storeFile还返回false,则参考下面代码 ftpClient.enterLocalPassiveMode();ftpClient.setControlEncoding("UTF-8");boolean stored =

[转载] 在java中为什么变量1000 = 1000 返回false,但是100=100返回true?

ps:题目的意思是指定义相同内容的不同变量之间的==比较.如果直接比较(1000 == 1000)的结果是true. 运行以下代码: Integer a = 1000, b = 1000; System.out.println(a == b); Integer c = 100, d = 100; System.out.println(c == d); 结果是: false true 我们知道,如果两个引用指向不同的对象,即使对象拥有相同的内容时,他们用==比较的结果就是不相等(返回false).

ModelState.IsValid返回false解决办法

ModelState.IsValid一直返回false时,怎么查找都找不到原因,可以通过如下方法查找出到底是哪个地方出的错误,对症下药 public static List<string> GetErrorListFromModelState (ModelStateDictionary modelState) { var query = from state in modelState.Values from error in state.Errors select error.ErrorMe

is_uploaded_file总是返回false的问题

is_uploaded_file ile总是返回false,根据以下方法进行检查,全部检查通过. 1,是否通过http协议上传. 2,form中是否有 enctype="multipart/form-data". 3,上传文件是否超出了规定的大小. 4,存放上传文件的文件夹是否存在,上传的文件夹是否具有写权限. 5,上传文件应该是使用move_uploaded_file()这个函数吧!  6,请确保$_FILES["upload"]['error'] = 0; 最后

android在view.requestFocus(0)返回false的解决办法

我们有时候想让listview的第一行自动获取到焦点,我们就会使用view.requestFocus(0)来操作,而有时候并不生效,debug后显示rerurn为false. 这是因为我们获取焦点太早,listview控件还为加载完毕.可以尝试一下方法解决: listview.post(new Runnable(){ @Override public void run(){ view.requestFocus(0); } }); ok,问题解决! android在view.requestFocu

easyui form validate总是返回false原因

最近做表单验证用了easyui form组件.又一次发现在测试表单都填写正确了但是调试表单的代码监测到调用form的"validate"方法总是返回false 最后查了一下原因在html中写的是easyui-validatebox但是在script中却又声明了$('#field1').combobox(); <form id="form1"> <input type="text" id="field1" cl