zoukankan      html  css  js  c++  java
  • 在android程序中加入widget(窗口小部件)并与之交互的关键代码

    摘要:

    widget(窗口小部件)可以增强应用程序的交互性,

    是很多应用中都会用到的功能,本文不求大而全,但是会给出程序与widget交互的关键代码

    正文:

    其实widget是嵌入(embedded)在桌面(launcher2)应用中的,

    它与自己的应用是在两个进程中分别执行的,

    所以与widget的交互就涉及到进程间通信,

    通常对于widget而言,可以采用google提供的api与广播配合来进行交互

    具体做法是在MyWidgt.java(命名任意)中回调方法中开启服务:

    public class MyWidget extends AppWidgetProvider {
        
        @Override
        public void onReceive(Context context, Intent intent) {
            Intent i = new Intent(context,UpdateWidgetService.class);
            context.startService(i);
            super.onReceive(context, intent);
        }
    
        @Override
        public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                int[] appWidgetIds) {
    
            super.onUpdate(context, appWidgetManager, appWidgetIds);
        }
    
        @Override
        public void onEnabled(Context context) {
            Intent intent = new Intent(context,UpdateWidgetService.class);
            context.startService(intent);
            super.onEnabled(context);
        }
    
        @Override
        public void onDisabled(Context context) {
            Intent intent = new Intent(context,UpdateWidgetService.class);
            context.stopService(intent);
            super.onDisabled(context);
        }
        
    }

    在UpdateWidgetService.java中调用google的api

    并设置intent

    private AppWidgetManager awm = AppWidgetManager.getInstance(this);
    ComponentName provider = new ComponentName( UpdateWidgetService.this, MyWidget.class); RemoteViews views = new RemoteViews(getPackageName(), R.layout.widget); views.setTextViewText(R.id.TextView,"XXX"); //这是给按钮添加了点击事件,并由按钮通过broadcast的intent发出 Intent intent = new Intent(); intent.setAction("com.XXX.action"); PendingIntent pendingIntent = PendingIntent.getBroadcast( getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); views.setOnClickPendingIntent(R.id.btn, pendingIntent); awm.updateAppWidget(provider, views);

    如果定时执行这段代码就可以达到定时更新widget的效果了

    剩下的工作还有配置清单文件,创建widget_provider.xml文件,创建布局文件等,在此就不累述了.

  • 相关阅读:
    sql server 如何查看这个数据库有多少张表并具体显示出来
    SQL Server2008 SP1安装 查找安装媒体怎么解决
    检测到在集成的托管管道模式下不适用的 ASP.NET 设置。
    sql不记得用户名跟密码怎么办
    必背系列之数据库常用语法
    select * from 多张表的用法
    SAP与Oracle ERP
    with as的用法
    IIS启动网站--HTTP错误500.21
    SqlServer2012--备份介质集不完整 ,介质集有2个介质簇但只提供了1个
  • 原文地址:https://www.cnblogs.com/BlogCommunicator/p/4962394.html
Copyright © 2011-2022 走看看