实验说明##
- 实验平台:Android Studio 2.0
- 测试平台:Android 4.2
实验内容##
- 生成安卓APK并成功安装在手机端,运行结果与实验要求一致。
- 实现静态注册和动态注册。
- 动态注册要求:
- 可以编辑广播的信息,点击Send 按钮发送广播。
- 设置一个按钮进行广播接收器的注册不注销。
- 广播接收器若已被注册,发送出的广播信息能够及时更新桌面上 Widget 上文字内 容及更新为默认dynamic 图片。
- 点击Widget 可以跳转回主界面。
- 结果如下所示:
Fig.1:进入APP后的第一界面,静态注册和动态注册按钮。- Fig.2:任意点击一个列表项后,回到主屏幕;
- Fig.3:在主屏幕Widget,可以看到图标显示正常并出现水果名字
- Fig.4点击动态注册后跳转到该页面,输入要广播内容为“123”,点击“Register Broadcast”,再次点击“send”;
- Fig.5:在主屏幕Widget可以看到出现了图标,并输出之前输入的文字内容;
实验步骤及关键代码##
此次实验是在该实验的基础上进行,大部分代码都没有变化,只是新加入了widget类并重写了相关的函数,在关键代码中就只给出了新添加的内容,与实验四相同的代码及内容不再赘述。
-
首先新建widget的java类,该部分在通过Android studio自带的生成时,会有相应的xml 文件生成,实验时用到了软件自动生成的java类并重写了相关方法,具体代码如下:
- 首先需要重写onUpdate函数,该函数中用到了PendingIntent,并使用了静态方法 getActivity,该方法可以使得Intent跳转到另一个activity组件;
- RemoteViews函数用于允 许用户程序修改主屏幕的View,实验中的结果是:当我们点击静态注册的某项内容时,会在主 屏幕的widget更新刚刚被点击的内容并显示 。
- 在最后,需要对主屏幕的widget设置图片点击监听事件,当点击图片时,可以返回应用程序的 主页面;在每次点击相关的注册内容后,需要调用appWidgetManager对widget的内容进行更 新。
- 接下来还需要重写onReceive函数,具体代码如下:
- 实验里依旧使用bundle来传送相关数据,并且为静态注册设置动作为“STATICATION”这里用 到了setTextViewText和setImageViewResource函数,函数中将相应的水果图片和名字获得后 利用Widget布局文件中的id,传送过去,使得主屏幕Widget和应用程序能够时时保持数据的同 步;最后设置相应图片的点击事件并能够返回主屏幕。
-
动态注册重写onReceive函数,内容不静态的相似,函数使用方法也相同,代码中给出了注 释,在此就不赘述,只给出相应的实现代码:
-
最后需要对设置的静态和动态事件进行注册:
-
最后给出软件自动生成布局文件:
工程具体代码请戳Lab5