当前位置: 代码迷 >> Android >> Android平添Widget
  详细解决方案

Android平添Widget

热度:61   发布时间:2016-04-27 23:53:26.0
Android添加Widget

Android添加Widget

  • 用Android Studio新建一个叫 New-Widget-App Widget
  • 你会发现Android Studio把什么东西都给你配好了,包括Manifest里面的东西(;?;)
<receiver android:name=".view.widget.WeatherWidget" >    <intent-filter>        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />    </intent-filter>    <meta-data        android:name="android.appwidget.provider"        android:resource="@xml/weather_widget_info" /></receiver>
  • 修改你的布局文件
  • 新建一个Service便于每小时一次更新你的Widget,这里以天气Widget为例
  • 在Service里的onStartCommand方法中进行每小时发送一次广播
@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {   if(null == timer){       timer = new Timer();   }   timer.schedule(new TimerTask() {       @Override       public void run() {           Log.d("widget","run");           //android.appwidget.action.APPWIDGET_UPDATE           sendBroadcast(new Intent("android.appwidget.action.APPWIDGET_UPDATE"));       }   }, 0,interval);   return super.onStartCommand(intent, flags, startId);}
  • 在对Widget进行处理的WeatherWidget onReceive里进行配置
@Overridepublic void onReceive(Context context, Intent intent) {    super.onReceive(context, intent);    String strAction = intent.getAction();    if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(strAction)) {        /* Do update */        Log.d("widget","if");        AppWidgetManager gm = AppWidgetManager.getInstance(context);        int[] ids = gm.getAppWidgetIds(new ComponentName(context, WeatherWidget.class));        onUpdate(context,AppWidgetManager.getInstance(context),ids);    }}

* 然后在updateAppWidget里修改控件就可以了,就像

views.setTextViewText(R.id.appwidget_text, widgetText);

版权声明:本文为博主原创文章,未经博主允许不得转载。

  相关解决方案