1.写布局,将widget样式设计好
2.在res文件夹下新建一个xml文件夹,
新建一个文件,选择AppWidget Provider选项
在布局中添加标签
minWidth="250dp"//设置最小宽度,最大为4*4,经验值为n*70-30
minHeight="40"//两个标签设置完毕,为4*1的大小样式
updatePeriodMillis="1"//此标签为设置更新时间间隔,最小为30分钟,小于30分钟的值默认为30分钟
initialLayout="LayoutId"//设置布局的地址
3.新建一个类继承AppWidgetProvider类//此类是一个广播类
重写五个方法:onREceive,onUpdate,onDeleted,onEnable,onDisable方法
4.新建一个类继承service类
在此类中新建一个内部类用于广播接收方法
重写onReceive方法
1)接收widget发送的广播
if("ACTION_MAKE_NUMBER".equals(intent.getAction())){
//新建一个AppWidgetManager manager =AppWidgetManager.getInstance(context);
//调用 manager的updateAppWidget方法//其中方法中有两个参数(provider,view)
//provider为一个ComponentName 对象
//view为一个RemoteViews对象
}
5.在service中处理接收到的广播
在oncreate方法中
构建新建好的内部类对象 MyReceive对象
添加隐式意图:构建IntentFilter对象 filter
添加意图filter.addAction("ACTION.MAKE.NUMBER")
注册广播:registerReceiver(receiver,infliter)
在onDestory方法中注销广播
unRegisterReceiver();
6.在Mywidget类中的onUpdate方法中进行操作
//给按钮绑定一个pendingIntent,点击的时候发送系统广播,更新数字要用
构建AppWidgetManager对象
调用该对象的updateAppWidget方法(provider,view)
provider为一个ComponentName对象
View为一个RemoteViews对象
将views设置OnClickPendingIntent(ID//按钮地址,pendingIntent)
设置参数pendingIntent :PendingIntent.getBroadcast(context,0,intent//获得意图对象,flag)
7.在onEnable方法中启动服务
8.在onDisabled方法中停止广播