Articles of android pendingintent

如何创建不同的pendingintent使filterEquals()返回false?

我正在使用AlarmManager设置重复意图,但它已经引起了一些小麻烦,所以希望任何人都可以提供帮助。 概要 有2个未决意图。 一个运行在1000,另一个运行在每天2000。 每个包含来自数据库的行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调用cancel。 Android文档: public void cancel(PendingIntent操作) 删除具有匹配Intent的所有警报。 任何types的警报,其Intent与此匹配的警报(由filterEquals(Intent)定义)将被取消。 public boolean filterEquals(Intent other) 为了意图解析(过滤)的目的,确定两个意图是否相同。 也就是说,如果他们的行为,数据,types,类别和类别是相同的。 这不会比较意图中包含的任何额外数据 。 所以在上面的例子中,如果我做出相同的意图然后取消, 上述两个意图将被取消,因为它们来自同一个类/相同的动作等(除了“额外”数据是rowId但filterEquals不在乎关于额外的数据)。 这有什么解决方法吗?

如何才能正确地将唯一的额外内容传递给待处理的意图?

我遇到了一个有关alarmManager的问题,以及与其一起使用的附加function的待处理意图。 如果我设置多个警报,它们将会关闭,但额外的设置保持不变。 我已经读过这些问题: android挂起意图通知问题 Android保持缓存我的意图额外,如何声明一个保持新鲜额外的待定意图? 我试过了: 为每个待处理的意图分配唯一的ID 使用所有待处理的意图标志, 一切都无济于事。 我不知道为什么它不起作用。 这是一段代码: Intent intent = new Intent(con, AppointmentNotificationReciever.class); intent.putExtra(“foo”, bar.toString()); int id = randomNum; PendingIntent sender = PendingIntent.getBroadcast(con, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager am = (AlarmManager) con.getSystemService(Context.ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP, scheduleExecution, sender);

Android Notification PendingIntent Extras null

我试图从通知发送信息到被调用的活动,而从我的活动我得到null。 通知代码是: private void showNotification() { Intent resultIntent = new Intent(this, MainActivity.class); if (D) Log.d(TAG, “Id: ” + Id); resultIntent.putExtra(“ineedid”, deviceId); TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); stackBuilder.addParentStack(MeterActivity.class); stackBuilder.addNextIntent(resultIntent); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); // Bundle tmp = resultIntent.getExtras(); // if (tmp == null) { // Log.d(TAG, “tmp bundle is null”); // } else { // long […]

如何在android中按下通知时打开片段页面

我在通知栏中按通知时试图打开一个片段。 我的app结构是: 带导航抽屉菜单的基本活动 从菜单打开的一些片段 b.setOnClickListener(new OnClickListener() { @SuppressWarnings({ “deprecation”, “static-access” }) public void onClick(View v) { w_nm=(NotificationManager) getActivity().getSystemService(getActivity().NOTIFICATION_SERVICE); Notification notify=new Notification(R.drawable.notnificationlogo,waternoti,System.currentTimeMillis()); Intent notificationIntent = new Intent(getActivity(), Abc.class); PendingIntent pending=PendingIntent.getActivity(getActivity(), 0,notificationIntent, 0); notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP ); notify.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL; notify.setLatestEventInfo(getActivity(),waternoti,waternoti1, pending); w_nm.notify(0, notify); 谁能告诉我如何链接下一个片段页面(当前代码在扩展片段的类中)

如何获取和取消PendingIntent?

我有一个alarmManager ,我用它来在特定时间向用户发送通知。 由于有多个警报,我有多个待处理的意图我正在创建并给出一个唯一的ID,但是在某些情况下我需要获取所有待处理的意图然后取消它们,所以我可以重置警报。 我试过这样做,我似乎仍然无法做到这一点,所以我有几个问题: 这是你如何正确获取和取消PendingIntent ? Intent intent = new Intent(con, AppointmentNotificationReciever.class); PendingIntent sender = PendingIntent.getBroadcast(con, id, intent, PendingIntent.FLAG_CANCEL_CURRENT); AlarmManager am = (AlarmManager) con.getSystemService(Context.ALARM_SERVICE); am.cancel(sender); 意图是否需要与原始待定意图(附加内容和所有内容)完全匹配? PendingIntent标志是否需要与原始待定意图的标志相匹配?

Android PendingIntent会带您进入已有的活动吗?

真的不确定如何搜索这个…… 每当在我的队列中添加或删除作业以在状态栏中发出通知时,我都会调用以下内容: private void showNotification() { int jobsize = mJobQueue.size(); int icon = (jobsize == 0) ? android.R.drawable.stat_sys_upload_done : android.R.drawable.stat_sys_upload; Notification notification = new Notification(icon, “Test”, System.currentTimeMillis()); Intent intent = new Intent(this, FileManagerActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); notification.flags = (Notification.FLAG_SHOW_LIGHTS | Notification.FLAG_AUTO_CANCEL); notification.setLatestEventInfo(this, “Uploading to our servers”, getString((jobsize > 0) ? R.string.notification_active_transfers […]

在Android中获取createChooser方法的IntentSender对象

我想使用新版本的Intent.createChooser方法,该方法使用IntentSender 。 文档仅说明我可以从PendingIntent实例中获取它。 在我看来, PendingIntent似乎没有任何其他用途。 是否有其他方式来获取IntentSender或我是否需要创建PendingIntent ?

如何使用PendingIntent从服务到客户端/活动进行通信?

我一直在Android开发者网站上阅读以下文本,特别是在框架主题 – >服务 – >启动服务下 。 在那里它陈述如下: 如果服务不提供绑定,则使用startService()提供的意图是应用程序组件与服务之间唯一的通信方式。 但是,如果您希望服务返回结果,则启动该服务的客户端可以为广播创建PendingIntent(使用getBroadcast())并将其传递给启动该服务的Intent中的服务。 然后,该服务可以使用广播来传递结果。 我有几个问题: 此文本是否适用于Service 和 IntentService ? 如何(代码性地)在Service范围内实现这一目标; 然后,该服务可以使用广播来传递结果。 以及所提到的广播将结果传递给原始客户/活动的位置? 是否有一些方法应该被覆盖(如onActivityResult() )或其他什么?

意图和未决意图之间的确切区别是什么?

可能重复: 什么是待定意图? 我对意图和未决意图感到困惑。 任何人都可以解释两者之间究竟有什么区别? 我搜索了SO,我find了这个链接,但它不符合我的需要 : https : //stackoverflow.com/questions/5633810/what-is-difference-between-an-intent-and-a-pending – 意图 。 我知道待定意图是一个意图,将在稍后开始。 正常意图在传递给startActivity(intent)或StartService(intent) 。

待通知意图不起作用

下面是我的代码块,它应该在点击NotificationActivity时打开NotificationActivity 。 但它不起作用。 private void setNotification(String notificationMessage) { Uri alarmSound = getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); mNotificationManager = getApplication().getSystemService(Context.NOTIFICATION_SERVICE); Intent notificationIntent = new Intent(getApplicationContext(), NotificationActivity2.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 0,notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext()) .setSmallIcon(R.drawable.logo) .setContentTitle(“My Notification”) .setStyle(new NotificationCompat.BigTextStyle() .bigText(notificationMessage)) .setContentText(notificationMessage).setAutoCancel(true); mBuilder.setSound(alarmSound); mBuilder.setContentIntent(contentIntent); mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build()); }