【Android随记】-- AppWidget更新桌面内容

今天遇到了一个问题  

  Android的appwidget中 有若干个按钮 点击不同的按钮  在appwidget上更新不同的文字,

一开始以为很简单,实际上也挺简单的 ,只能说自己技术不行  

 

就是在发送广播  绑定事件的时候 

  
  
  
  
  1. public static PendingIntent getBroadcast(Context context, int requestCode,Intent intent, int flags)  

第二个参数要设置成不同  否则有可能接收广播时  取出的数据为null

 ----------------------------------------------------------------------

 以下为我的Demo代码,仅供参考

  
  
  
  
  1. package com.example.demo; 
  2.  
  3. import android.app.PendingIntent; 
  4. import android.app.PendingIntent.CanceledException; 
  5. import android.appwidget.AppWidgetManager; 
  6. import android.appwidget.AppWidgetProvider; 
  7. import android.content.ComponentName; 
  8. import android.content.Context; 
  9. import android.content.Intent; 
  10. import android.os.Bundle; 
  11. import android.widget.RemoteViews; 
  12.  
  13. public class AppWidget extends AppWidgetProvider { 
  14.     /** 
  15.      * 接受广播事件 
  16.      * */ 
  17.  
  18.     @Override 
  19.     public void onReceive(Context context, Intent intent) { 
  20.  
  21.         if (intent.getAction().equals("gejw.android.widget1")) { 
  22.             RemoteViews remoteViews = new RemoteViews(context.getPackageName(), 
  23.                     R.layout.appwidgetlayout); 
  24.             remoteViews.setTextViewText(R.id.tx, intent.getStringExtra("msg")); 
  25.  
  26.             AppWidgetManager appWidgetManager = AppWidgetManager 
  27.                     .getInstance(context); 
  28.  
  29.             ComponentName componentName = new ComponentName(context, 
  30.                     AppWidget.class); 
  31.  
  32.             appWidgetManager.updateAppWidget(componentName, remoteViews); 
  33.         } 
  34.         super.onReceive(context, intent); 
  35.     } 
  36.  
  37.     @Override 
  38.     public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
  39.             int[] appWidgetIds) { 
  40.         RemoteViews remoteViews = new RemoteViews(context.getPackageName(), 
  41.                 R.layout.appwidgetlayout); 
  42.  
  43.         click(context, remoteViews, R.id.btn1, "按钮1"); 
  44.         click(context, remoteViews, R.id.btn2, "按钮2"); 
  45.         click(context, remoteViews, R.id.btn3, "按钮3"); 
  46.         click(context, remoteViews, R.id.btn4, "按钮4"); 
  47.         click(context, remoteViews, R.id.btn5, "按钮5"); 
  48.  
  49.         appWidgetManager.updateAppWidget(appWidgetIds, remoteViews); 
  50.     } 
  51.  
  52.     public void click(Context context,RemoteViews remoteViews ,int id,String msg) { 
  53.         Intent intent = new Intent(); 
  54.         intent.setAction("gejw.android.widget1"); 
  55.         intent.putExtra("msg", msg); 
  56.         PendingIntent pendingIntent = PendingIntent.getBroadcast(context, id, 
  57.                 intent, PendingIntent.FLAG_UPDATE_CURRENT); 
  58.         remoteViews.setOnClickPendingIntent(id, pendingIntent); 
  59.     } 

 

本文出自 “Panda | Android” 博客,转载请与作者联系!

你可能感兴趣的:(广播,pendingintent)