`

Android中的PendingIntent传送widgetID总是最后一个

阅读更多

疑问如题:

Intent intent = new Intent(context, MyWidgetProvider.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

PendingIntent doubleClick = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
-------------------------------->
int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, 0);

这是我遇到的问题,虽然通过修改getBroadcast方法的最后一个参数是int flag为PendingIntent.FLAG_UPDATE_CURRENT避免了在传送过程中出现的数据为空,但是得到的数据却总是Home screen中的最后一个该包的widgetID。此疑问未解。

 

问题解决,代码如下:

Intent intent = new Intent(context, MyWidgetProvider.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

Log.i(TAG, "appWidgetId "+appWidgetId);
PendingIntent doubleClick = PendingIntent.getBroadcast(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT);

RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
remoteViews.setOnClickPendingIntent(R.id.widget, doubleClick);
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);

也就是将getBroadcast的第二个参数修改为我们要传递的appWidgetId即可。

 

分享到:
评论
1 楼 cn23snyga 2013-06-18  
Intent intent = new Intent("org.test.broadcast.HELLO");
intent.putExtra("hello", hello);
PendingIntent pIntent = PendingIntent.getBroadcast(mContext, notifyId, intent,
				PendingIntent.FLAG_UPDATE_CURRENT);
mNotificationManager.notify(notifyId, mNotification);

请教贵博!
1、PendingIntent.FLAG_UPDATE_CURRENT
2、notifyId
我这样使用,为什么无法改变接收到的hello的值,永远是第一次赋给的值。

相关推荐

    Android 之 PendingIntent用法介绍

    在Android开发中,PendingIntent是一个非常重要的组件,它允许我们延迟执行某个操作或者将操作传递给其他应用。这个组件在很多场景下都有广泛的应用,比如通知、BroadcastReceiver、Service等。接下来,我们将深入...

    Android中pendingIntent的深入理解

    在Android开发中,PendingIntent是一个非常关键且独特的组件,它为应用程序提供了跨进程通信的能力,使得一个应用可以请求系统在未来的某个时刻执行特定的操作。PendingIntent不仅涉及到了Android的权限模型,还涉及...

    android 服务 Service PendingIntent 通知

    `PendingIntent`是Android中的一个关键类,它代表一个意图(Intent)的动作,可以在未来的某个时刻由系统或者其他应用触发。`PendingIntent`主要用于跨进程通信,例如在通知(Notification)中使用,当用户点击通知...

    Android中PendingIntent的简要介绍.pdf

    PendingIntent是Android系统中一个非常重要的概念,它是Intent的一个特殊形式,主要用于在应用程序的组件之间传递意图(Intent),并确保这些意图在特定的时间或由特定的事件触发时得到执行。与普通的Intent不同,...

    Android中pendingIntent与Intent的深入分析

    在Android中,pendingIntent可以通过getActivity、getBroadcast、getService三个静态方法来获取,分别对应着Intent的三种行为:跳转到一个activity组件、打开一个广播组件和打开一个服务组件。参数有四个,比较重要...

    Android编程实现PendingIntent控制多个闹钟的方法

    要用 android.app.PendingIntent.getBroadcast(Context context, int requestCode, Intent intent)来实现控制多个闹钟,关键点在于其中的一个参数requestCode. 举例说明如下: public void setClock(){ if(lva....

    android 桌面小窗口 widget demo

    在本篇内容中,我们将深入探讨如何创建一个Android桌面小窗口Widget,并通过"android 桌面小窗口 widget demo"来实践。 首先,我们需要了解Android Widget的基本组成和工作原理。Widget主要由以下几部分构成: 1. ...

    android之appwidget(一)简单appwidget

    最后,你需要在`onUpdate()`方法中使用RemoteViews来填充并更新布局,同时创建一个PendingIntent来响应用户的交互: ```java @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager,...

    Android App Widget 开发

    最后,为了让用户能够添加你的App Widget到主屏幕,需要在应用程序的主活动中提供一个启动`AddWidgetActivity`的选项。`AddWidgetActivity`可以引导用户完成添加操作。 以上就是一个简单的Android音乐播放器App ...

    安卓之 (解决问题)PendingIntent和Intent的区别1

    首先,Intent不能直接跨进程传递,而PendingIntent允许一个应用将自己的操作授权给另一个应用去执行,比如在通知、闹钟或桌面小部件中。其次,PendingIntent提供了权限控制,使得应用可以在其不运行时也能触发某个...

    Android-Android桌面小部件widget日签Or日历可作为桌面日历

    在Android平台上,开发者可以利用Android桌面小部件(Widget)功能为用户提供便捷的桌面服务,比如“Android桌面小部件widget日签Or日历可作为桌面日历”就是一个很好的例子。这个应用设计巧妙,不仅展示了日期,还...

    android app widget demo

    一个Android App Widget由一系列组件构成,如ImageView、TextView、Button等,通过XML布局文件进行定义。例如,你可以创建一个显示天气信息的小部件,包含当前温度、天气图标和日期。在AndroidManifest.xml中声明...

    Android代码-Android小部件AppWidget.rar

    在"Android小部件AppWidget"这个项目中,你可能会找到一个实现了上述功能的完整示例,包括源代码、布局文件以及必要的配置文件。"JavaApk源码说明.txt"可能是对源码的解释,而"点这里查看更多优质源码~.url"则可能是...

    PendingIntent 使用示例

    PendingIntent是Android系统中一个非常重要的组件,它允许应用程序在另一个上下文环境中执行特定操作。在Android应用开发中,PendingIntent常用于启动服务、发送广播、显示通知等场景,为应用提供了一种跨进程调用的...

    android widget

    在Android开发中,Widget是应用程序在用户主屏幕上的一种表现形式,它允许开发者为用户提供轻量级的交互体验,即便在应用程序未打开时也能提供服务。本篇将详细讲解"android widget"这一主题,主要基于 mars 老师的 ...

    AndroidStudio简单实现单击Widget打开Activity

    最后,为了使Widget能在设置界面显示,需要在主Activity中调用AppWidgetManager的updateAppWidget()方法,传递Widget的ID和RemoteViews对象: ```java public class MainActivity extends AppCompatActivity { @...

    android widget简单使用方法

    本教程将详细介绍如何在Android项目中创建和使用一个简单的Widget。 1. **理解Android Widget** Android小部件是基于AppWidgetProvider类的,它是一个BroadcastReceiver的子类,负责处理小部件的更新、点击等事件...

    博客《详解PendingIntent》对应的有问题的PendingIntent源码

    在Android开发中,`PendingIntent`是一个非常关键的组件,它允许一个应用组件(如Activity、Service或BroadcastReceiver)在另一个应用组件中执行一个动作,即使原来的组件已经被销毁或者当前进程不可用。...

    android AppWidget ListView

    在本案例中,我们探讨的是如何在AppWidget中使用ListView,这是一个增强用户交互的方式,使小部件能显示多行数据。我们将深入源码,了解其工作原理。 首先,我们需要明白`ListView`在Android中的作用。ListView是一...

Global site tag (gtag.js) - Google Analytics