基于android平台“每日一句”应用的设计与实现 - 图文(9)

2020-05-07 09:36

兰州大学本科生毕业论文 基于android平台“每日一句”应用的设计与实现

附录C 桌面插件相关代码

package com.note;

import android.annotation.SuppressLint; import android.app.PendingIntent;

import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.net.Uri;

import android.widget.RemoteViews; import android.widget.Toast; import android.util.Log;

import java.util.Set; import java.util.HashSet; import java.util.Iterator;

@SuppressLint(\

public class ExampleAppWidgetProvider extends AppWidgetProvider { private static final String TAG = \

private boolean DEBUG = false;

// 启动ExampleAppWidgetService服务对应的action private final Intent EXAMPLE_SERVICE_INTENT =

new

Intent(\

// 更新 widget 的广播对应的action

private

final

String

ACTION_UPDATE_ALL 35

=

兰州大学本科生毕业论文 基于android平台“每日一句”应用的设计与实现

\

// 保存 widget 的id的HashSet,每新建一个 widget 都会为该 widget 分配一个 id。

private static Set idsSet = new HashSet(); // 按钮信息 // 图片数组

R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7,

private static final int BUTTON_SHOW = 1; private static final int[] ARR_IMAGES = { }; }

// 每次 widget 被创建时,对应的将widget的id添加到set中 for (int appWidgetId : appWidgetIds) { } prtSet();

idsSet.add(Integer.valueOf(appWidgetId));

// onUpdate() 在更新 widget 时,被执行, @Override public

void

onUpdate(Context

context,

AppWidgetManager

appWidgetManager, int[] appWidgetIds) {

Log.d(TAG, \

// 当 widget 被初次添加 或者 当 widget 的大小被改变时,被调用 @Override

36

兰州大学本科生毕业论文 基于android平台“每日一句”应用的设计与实现

public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions) {

Log.d(TAG, \

appWidgetManager,

super.onAppWidgetOptionsChanged(context, appWidgetId,

newOptions); }

// widget被删除时调用 @Override

public void onDeleted(Context context, int[] appWidgetIds) {

// 当 widget 被删除时,对应的删除set中保存的widget的id for (int appWidgetId : appWidgetIds) { } prtSet();

idsSet.remove(Integer.valueOf(appWidgetId));

Log.d(TAG,

\

appWidgetIds.length=\

super.onDeleted(context, appWidgetIds); }

// 第一个widget被创建时调用 @Override

public void onEnabled(Context context) {

Log.d(TAG, \

// 在第一个 widget 被创建时,开启服务

context.startService(EXAMPLE_SERVICE_INTENT);

super.onEnabled(context); }

37

兰州大学本科生毕业论文 基于android平台“每日一句”应用的设计与实现

// 最后一个widget被删除时调用 @Override

public void onDisabled(Context context) {

super.onDisabled(context); }

// 接收广播的回调函数 @Override

public void onReceive(Context context, Intent intent) {

final String action = intent.getAction(); Log.d(TAG, \ if (ACTION_UPDATE_ALL.equals(action)) { // “更新”广播

updateAllAppWidgets(context, AppWidgetManager.getInstance(context), idsSet);

} else if (intent.hasCategory(Intent.CATEGORY_ALTERNATIVE)) {

// “按钮点击”广播

Uri data = intent.getData();

int buttonId = Integer.parseInt(data.getSchemeSpecificPart()); if (buttonId == BUTTON_SHOW) { } }

Log.d(TAG, \Toast.makeText(context,

\

Clicked\

// 在最后一个 widget 被删除时,终止服务 context.stopService(EXAMPLE_SERVICE_INTENT); Log.d(TAG, \

Toast.LENGTH_SHORT).show();

super.onReceive(context, intent);

38

兰州大学本科生毕业论文 基于android平台“每日一句”应用的设计与实现

}

// 更新所有的 widget

private void updateAllAppWidgets(Context context, AppWidgetManager appWidgetManager, Set set) {

Log.d(TAG, \

// widget 的id int appID;

// 迭代器,用于遍历所有保存的widget的id Iterator it = set.iterator(); while (it.hasNext()) {

appID = ((Integer)it.next()).intValue(); // 随机获取一张图片 int

if (DEBUG) Log.d(TAG, \ // 获取 example_appwidget.xml 对应的RemoteViews RemoteViews

// 设置显示图片

remoteView.setImageViewResource(R.id.iv_show,

// 设置点击按钮对应的PendingIntent:即点击按钮时,发送广播。 remoteView.setOnClickPendingIntent(R.id.btn_show,

remoteView

=

new

index

=

(new

java.util.Random().nextInt(ARR_IMAGES.length));

RemoteViews(context.getPackageName(), R.layout.example_appwidget);

ARR_IMAGES[index]);

/*

getPendingIntent(context,

BUTTON_SHOW)); */

39


基于android平台“每日一句”应用的设计与实现 - 图文(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:“明月依然在,彩云何时归”(农天晶)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: