android widget 研究

 

之前的一些配置如mainfest.xml,xml/widget  ,res/layout/my_widget的具体配置请参考API文档,有详细的介绍。

 

 

一。对widget的配置。

 

要实现对widget的configurate的设置有以下几点要注意的

 

 

1.通过sendBroadcast把当前intent发送出去,action必须是AppWidgetManager.Action_APPWIDGET_UPDATE; 这样你写的WidgetProvider能接受到,因为widgetProvider本身就是reciver,action就是AppWidgetManager.Action_APPWIDGET_UPDATE,这样就能实现call widgetProvider

 

2.一定要写setResult(RESULT_OK, intent); 不然widget不会放到桌面上去(忘记了我测试了好久都没有出现。很郁闷的)

 

 

E/AndroidRuntime( 1785): Caused by: java.lang.NullPointerException

E/AndroidRuntime( 1785): at com.android.launcher.Launcher.completeAddAppWidget(Launcher.java:657)

E/AndroidRuntime( 1785): at com.android.launcher.Launcher.onActivityResult(Launcher.java:352)

E/AndroidRuntime( 1785): at android.app.Activity.dispatchActivityResult(Activity.java:3595)

E/AndroidRuntime( 1785): at android.app.ActivityThread.deliverResults(ActivityThread.java:3001)

 

因为对应的Laucher中把对应的widget的ID加入到WorkSpace.java中去。

 

 

二。对widgetProvidrer的编写

 

1.对于WidgetProvider的编写

 

 

defaultAppWidget的处理主要是获取到当前的RemoteViews 然后对其中的button 等设置监听

监听的设置 一般是用pendingIntent.因为RemoteViews只支持setOnClickPendingIntent(id,pendingIntent);

而pendIntent的获取一般有2种方法一种是PendingIntent.getActivity();就是跳到对应的Activity去处理你的事假。

 

pendingIntent = PendingIntent.getActivity(context,

0 /* no requestCode */, intent, 0 /* no flags */);

views.setOnClickPendingIntent(R.id.ivCover, pendingIntent);

 

第二种是通过调用servers来处理

 

pendingIntent = PendingIntent.getService(context,

0 /* no requestCode */, intent, 0 /* no flags */);

views.setOnClickPendingIntent(R.id.btnNext, pendingIntent);

 

 

 

三。对server的编写

 

onCreate一般是第一次调用的时候实例化一些东西

一般在onStart()中对你传过来的action进行处理

 

对应的servers处理完之后,调用WidgetProvider中的更新UI的code就ok了

 

 

参考文献:

Music的widget

Search的widget

有兴趣朋友可以直接去查看下源码!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值