疑问如题:
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即可。
分享到:
相关推荐
在Android开发中,PendingIntent是一个非常重要的组件,它允许我们延迟执行某个操作或者将操作传递给其他应用。这个组件在很多场景下都有广泛的应用,比如通知、BroadcastReceiver、Service等。接下来,我们将深入...
在Android开发中,PendingIntent是一个非常关键且独特的组件,它为应用程序提供了跨进程通信的能力,使得一个应用可以请求系统在未来的某个时刻执行特定的操作。PendingIntent不仅涉及到了Android的权限模型,还涉及...
`PendingIntent`是Android中的一个关键类,它代表一个意图(Intent)的动作,可以在未来的某个时刻由系统或者其他应用触发。`PendingIntent`主要用于跨进程通信,例如在通知(Notification)中使用,当用户点击通知...
PendingIntent是Android系统中一个非常重要的概念,它是Intent的一个特殊形式,主要用于在应用程序的组件之间传递意图(Intent),并确保这些意图在特定的时间或由特定的事件触发时得到执行。与普通的Intent不同,...
要用 android.app.PendingIntent.getBroadcast(Context context, int requestCode, Intent intent)来实现控制多个闹钟,关键点在于其中的一个参数requestCode. 举例说明如下: public void setClock(){ if(lva....
在本篇内容中,我们将深入探讨如何创建一个Android桌面小窗口Widget,并通过"android 桌面小窗口 widget demo"来实践。 首先,我们需要了解Android Widget的基本组成和工作原理。Widget主要由以下几部分构成: 1. ...
`Intent`是待执行的操作,`int`参数通常用于请求码,用于区分不同的PendingIntent实例,而最后一个`int`参数是标志位,可以设置一些附加的行为,如`FLAG_CANCEL_CURRENT`或`FLAG_UPDATE_CURRENT`。 PendingIntent的...
最后,你需要在`onUpdate()`方法中使用RemoteViews来填充并更新布局,同时创建一个PendingIntent来响应用户的交互: ```java @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager,...
最后,为了让用户能够添加你的App Widget到主屏幕,需要在应用程序的主活动中提供一个启动`AddWidgetActivity`的选项。`AddWidgetActivity`可以引导用户完成添加操作。 以上就是一个简单的Android音乐播放器App ...
1. **创建PendingIntent**: 在AppWidget的配置类(通常是继承自AppWidgetProvider的类)中,我们需要创建一个PendingIntent。这通常在`onUpdate()`或`onReceive()`方法中完成。以下是一个示例: ```java Intent ...
首先,Intent不能直接跨进程传递,而PendingIntent允许一个应用将自己的操作授权给另一个应用去执行,比如在通知、闹钟或桌面小部件中。其次,PendingIntent提供了权限控制,使得应用可以在其不运行时也能触发某个...
在Android平台上,开发者可以利用Android桌面小部件(Widget)功能为用户提供便捷的桌面服务,比如“Android桌面小部件widget日签Or日历可作为桌面日历”就是一个很好的例子。这个应用设计巧妙,不仅展示了日期,还...
一个Android App Widget由一系列组件构成,如ImageView、TextView、Button等,通过XML布局文件进行定义。例如,你可以创建一个显示天气信息的小部件,包含当前温度、天气图标和日期。在AndroidManifest.xml中声明...
在"Android小部件AppWidget"这个项目中,你可能会找到一个实现了上述功能的完整示例,包括源代码、布局文件以及必要的配置文件。"JavaApk源码说明.txt"可能是对源码的解释,而"点这里查看更多优质源码~.url"则可能是...
PendingIntent是Android系统中一个非常重要的组件,它允许应用程序在另一个上下文环境中执行特定操作。在Android应用开发中,PendingIntent常用于启动服务、发送广播、显示通知等场景,为应用提供了一种跨进程调用的...
在Android开发中,Widget是应用程序在用户主屏幕上的一种表现形式,它允许开发者为用户提供轻量级的交互体验,即便在应用程序未打开时也能提供服务。本篇将详细讲解"android widget"这一主题,主要基于 mars 老师的 ...
本教程将详细介绍如何在Android项目中创建和使用一个简单的Widget。 1. **理解Android Widget** Android小部件是基于AppWidgetProvider类的,它是一个BroadcastReceiver的子类,负责处理小部件的更新、点击等事件...
在Android开发中,`PendingIntent`是一个非常关键的组件,它允许一个应用组件(如Activity、Service或BroadcastReceiver)在另一个应用组件中执行一个动作,即使原来的组件已经被销毁或者当前进程不可用。...
在本案例中,我们探讨的是如何在AppWidget中使用ListView,这是一个增强用户交互的方式,使小部件能显示多行数据。我们将深入源码,了解其工作原理。 首先,我们需要明白`ListView`在Android中的作用。ListView是一...