Android AppWidget 开发中PendingIntent传送数据丢失解决办法
2011-06-11 11:48
411 查看
AppWidget要向外部发送数据,可以把数据放在Intent里,再用intent对象生成一个PendingIntent对象,然后用RemoteViews的setOnClickPendingIntent绑定到相应控件上,具体代码如下:
网上的例子代码基本上是这样的,但是如果在启动的Activity接收Intent过来的数据,你会发现得到的Bundle其实是空的,也就是说,根本没有数据传过来。
这里我们需要改一下第8行代码,getActivity方法的最后一个参数是int flag,根据官方开发指南,这个值可以是FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT
简单翻译一下:
int FLAG_CANCEL_CURRENT:如果该PendingIntent已经存在,则在生成新的之前取消当前的。
int FLAG_NO_CREATE:如果该PendingIntent不存在,直接返回null而不是创建一个PendingIntent.
int FLAG_ONE_SHOT:该PendingIntent只能用一次,在send()方法执行后,自动取消。
int FLAG_UPDATE_CURRENT:如果该PendingIntent已经存在,则用新传入的Intent更新当前的数据。
我们需要把最后一个参数改为PendingIntent.FLAG_UPDATE_CURRENT,这样在启动的Activity里就可以用接收Intent传送数据的方法正常接收。
RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget); ComponentName thisWidget = new ComponentName(context,Widget.class); AppWidgetManager manager = AppWidgetManager.getInstance(context); Intent intent=new Intent(context,Main.class); Bundle extras=new Bundle(); extras.putInt("appWidgetId", appWidgetIds[0]); intent.putExtras(extras); PendingIntent pendingIntent=PendingIntent.getActivity(context,0, intent,PendingIntent.0); updateViews.setOnClickPendingIntent(R.id.abs,pendingIntent); manager.updateAppWidget(thisWidget, updateViews);
网上的例子代码基本上是这样的,但是如果在启动的Activity接收Intent过来的数据,你会发现得到的Bundle其实是空的,也就是说,根本没有数据传过来。
这里我们需要改一下第8行代码,getActivity方法的最后一个参数是int flag,根据官方开发指南,这个值可以是FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT
简单翻译一下:
int FLAG_CANCEL_CURRENT:如果该PendingIntent已经存在,则在生成新的之前取消当前的。
int FLAG_NO_CREATE:如果该PendingIntent不存在,直接返回null而不是创建一个PendingIntent.
int FLAG_ONE_SHOT:该PendingIntent只能用一次,在send()方法执行后,自动取消。
int FLAG_UPDATE_CURRENT:如果该PendingIntent已经存在,则用新传入的Intent更新当前的数据。
我们需要把最后一个参数改为PendingIntent.FLAG_UPDATE_CURRENT,这样在启动的Activity里就可以用接收Intent传送数据的方法正常接收。
相关文章推荐
- Android AppWidget 开发中PendingIntent传送数据丢失解决办法
- 闹钟开发过程中用PendingIntent传送数据丢失解决办法
- 闹钟开发过程中用PendingIntent传送数据丢失解决办法
- 闹钟开发过程中用PendingIntent传送数据丢失解决办法
- Android 多个 AppWidget PendingIntent 传送数据丢失解决办法
- 用PendingIntent传送数据丢失解决办法
- 用PendingIntent传送数据丢失解决办法
- PendingIntent传送数据丢失解决办法
- 关于Android 6.0及以上版本用PendingIntent传送数据丢失问题
- delphi xe5 android 开发数据访问手机端 解决乱码的办法
- Android 通知PendingIntent意图打开Activity,数据无更新? 解决方法
- Android驱动开发【NDK模型】———NDK程序设计之产生头文件出现找不到appcompat-v7的错误解决办法
- Android:AppWidget,PendingIntent,RemoteViews用法
- Android AppWidget偶尔无响应原因及解决办法
- android开发中,apk文件安装到\system\app 的解决办法 仅限root机
- Android:SingleTask对Intent传递数据的影响及解决办法
- 拿什么拯救:Android Studio 时代 继续使用Eclipse开发Android app时遇到的几个问题以及解决办法
- android开发环境 安装ADT 一直pending解决办法
- 用struts2开发的App后台,返回json数据中文为问号的解决办法
- 用eclipse开发android app,自动补齐时很慢很卡的解决办法(转帖)