AppWidgetProvider+httpclient实现的桌面新闻

功能大概是 长按屏幕->请求一个超玩三国杀AppWidget->进入configure activity配置信息->在桌面上显示UI->点击新闻进入activity中浏览

首先在AppWidgetProvider启动前 利用 AppWidgetProvider界面配置文件中的android:configure属性来指定一个前置activity用来配置相关信息

  

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"  
    android:minWidth="280dip"  
    android:minHeight="175dip"  
    android:configure="com.activity.MyNoteConf" 
    android:initialLayout="@layout/app"/>

不过指定的activity需要在AndroidManifest.xml中声明该activity中加入

<intent-filter>  
          <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />  
</intent-filter>     

在请求AppWidgetProvider之前会先执行MyNoteConf这个activity 需要注意的是在这个 configure 的 activity 中需要setResult()

返回一个结果如果是setResult(RESULT_CANCELED);或者是 在activity中点返回键退出 对AppWidgetProvider的请求都讲被终止

只有在setResult(RESULT_OK, resultValue);的情况下对AppWidgetProvider的请求可以继续进行 其中  resultValue   是一个封装了 mAppWidgetId 参数的Intent

Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,mAppWidgetId );

mAppWidgetId 是你AppWidgetProvider的Id 可以在activity中获得

Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
     mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,AppWidgetManager.INVALID_APPWIDGET_ID);
}

在这个activity中可以做很多实例AppWidgetProvider之前要完成的事 比如说定义AppWidgetProvider的某些UI的颜色,样式,大小的信息 AppWidgetProvider刷新间隔的信息等等吧

完整所有的只需要finish();就可以解释configure 的activity了

至于如何在configure 的activity 向AppWidgetProvider传值 我也没能做到 最后还是把一些配置信息储存在了application中了 比较麻烦

在AppWidgetProvider 界面汇总 大概是若干个 textview 和一个 button. button负责点击进入更新activity ,而 每个textview对应一条新闻 点击进入activity用webview浏览

所以每个textview需要一个PendingIntent 在  PendingIntent  描述的Intent中需要传递一些参数给负责浏览的activity 比如是第几条或者其他的

Intent intent = new Intent(context,Main.class);
Bundle b = new Bundle();
b.putInt("pageNo", i);
intent.putExtras(b);
intent.setAction(String.valueOf(System.currentTimeMillis()));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getActivity(context, 0, intent, 0);

如果不加红色的部分或者用PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);的话也可以实现向activity传值 但是最终无论里点击哪一条新闻

最后在activity中接收到的总是最后一个PendingIntent对应Intent中的值 因为 PendingIntent.FLAG_UPDATE_CURRENT 会覆盖之前的值

这样在activity中得到点击的是哪一条的参数值后就可以进行浏览了 我用的是Webview+ViewFlipper  这样无论点哪一条 在activity中都可以翻页浏览其他的 还可以加入Notification 负责显示上次更新时间 并且点击 进入到更新

   

由于没有新闻的数据 所以用httpclient + 一个第三方解析html的东西 jericho-html-2.5.jar 扒取了 超玩三国杀站的数据 取了前几条新闻的标题和URL地址 用了下 所以准备数据比较慢

至于定时刷新是用Timer+TimerTask做的 不知道好不好

下载地址 http://download.csdn.net/source/3419921

android 版本2.1 在手机上跑得起来 模拟器不知道

请鞭挞我吧...NBA
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值