package com.king.android.speical; import com.king.android.R; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.widget.RemoteViews; /** * 描述:创建widget类 * 作者:Andy.Liu * 时间: 2012-7-17 上午07:01:39 **/ public class ExampleAppWidgetProvider extends AppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) { final int N = appWidgetIds.length; for(int i=0;i<N;i++){ int appWidgetId = appWidgetIds[i]; String titlePrefix = WidgetActivity.loadTitlePref(context, appWidgetId); updateAppWidget(context, appWidgetManager, appWidgetId, titlePrefix); } super.onUpdate(context, appWidgetManager, appWidgetIds); } //当桌面组件删除时调用 @Override public void onDeleted(Context context, int[] appWidgetIds) { //删除appWidget final int N = appWidgetIds.length; for(int i =0;i<N;i++){ WidgetActivity.deleteTitlePref(context, appWidgetIds[i]); } } //当AppWidtgetProvider提供的第一个组件删除时调用 @Override public void onEnabled(Context context) { PackageManager pm = context.getPackageManager(); pm.setComponentEnabledSetting(new ComponentName("com.king.android.special", ".ExampleBroadCastReceiver"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); } //当AppWidtgetProvider提供的最后一个组件删除时调用 @Override public void onDisabled(Context context) { PackageManager pm = context.getPackageManager(); pm.setComponentEnabledSetting(new ComponentName("com.king.android.special", ".ExampleBroadCastReceiver"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); } // 更新 static void updateAppWidget(Context context,AppWidgetManager appwidgetManager,int appWidgetId,String titlePrefix){ //构建 RemoteViews 对象对桌面组件进行更新 RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider); //更新文本内容,指定布局组件 views.setTextViewText(R.id.appwidget_text, titlePrefix); //将RemoteViews更新传入到AppWidget进行更新 appwidgetManager.updateAppWidget(appWidgetId, views); } }

package com.king.android.speical; import java.util.ArrayList; import android.appwidget.AppWidgetManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; /** * 描述:创建广播类来接收的信息 * 作者:Andy.Liu * 时间: 2012-7-17 上午07:03:30 **/ public class ExampleBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //通过BroadCastReceiver来更新AppWidget String action = intent.getAction(); if(action.equals(Intent.ACTION_TIMEZONE_CHANGED)||action.equals(Intent.ACTION_TIME_CHANGED)){ AppWidgetManager gm = AppWidgetManager.getInstance(context); ArrayList<Integer> appWidgetIds = new ArrayList<Integer>(); ArrayList<String> texts = new ArrayList<String>(); WidgetActivity.loadAllTitlePrefs(context, appWidgetIds, texts); // 更新所有AppWidget final int N = appWidgetIds.size(); for(int i=0;i<N;i++){ ExampleAppWidgetProvider.updateAppWidget(context,gm,appWidgetIds.get(i),texts.get(i)); } } } }

package com.king.android.speical;

import java.util.ArrayList; import android.app.Activity; import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.widget.EditText; import com.king.android.R; public class WidgetActivity extends Activity { private static final String PREFS_NAME = "com.king.android.ExampleAppWidgetProvider"; private static final String PREF_PREFIX_KEY = "prefix_"; int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; EditText mAppWidgetPrefix; public WidgetActivity() { super(); } public void onCreate(Bundle icicle) { super.onCreate(icicle); setResult(RESULT_CANCELED); setContentView(R.layout.appwidget_configure); mAppWidgetPrefix = (EditText) findViewById(R.id.appwidget_prefix); findViewById(R.id.save_button).setOnClickListener(mOnClickListener); Intent intent = getIntent(); Bundle extras = intent.getExtras(); if (extras != null) { mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); } if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) { finish(); } mAppWidgetPrefix.setText(loadTitlePref(WidgetActivity.this, mAppWidgetId)); } View.OnClickListener mOnClickListener = new View.OnClickListener() { public void onClick(View v) { final Context context = WidgetActivity.this; String titlePrefix = mAppWidgetPrefix.getText().toString(); saveTitlePref(context, mAppWidgetId, titlePrefix); //取得AppWidgetManager实例 AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); //更新AppWidget ExampleAppWidgetProvider.updateAppWidget(context, appWidgetManager, mAppWidgetId, titlePrefix); Intent resultValue = new Intent(); resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); setResult(RESULT_OK, resultValue); finish(); } }; static void saveTitlePref(Context context, int appWidgetId, String text) { SharedPreferences.Editor prefs = context.getSharedPreferences(PREFS_NAME, 0).edit(); prefs.putString(PREF_PREFIX_KEY + appWidgetId, text); prefs.commit(); } static String loadTitlePref(Context context, int appWidgetId) { SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, 0); String prefix = prefs.getString(PREF_PREFIX_KEY + appWidgetId, null); if (prefix != null) { return prefix; } else { return "xxxxxxxxxxxxxxxxx"; } } static void deleteTitlePref(Context context, int appWidgetId) { } static void loadAllTitlePrefs(Context context, ArrayList<Integer> appWidgetIds, ArrayList<String> texts) { } }

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/appwidget_prefix" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/save_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@android:string/ok" /> </LinearLayout>

<?xml version="1.0" encoding="utf-8"?>

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="100dp" android:minHeight="50dp" android:updatePeriodMillis="86400000" android:initialLayout="@layout/appwidget_provider"/>

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/appwidget_text" android:layout_width="wrap_content" android:layout_height="wrap_content"/>

更多相关文章

  1. android练习一之简易浏览器
  2. android listView动态加载数据
  3. Android的四种重要组件
  4. Android(安卓)错误信息集锦(持续更新)
  5. Android(安卓)Exception异常汇集【不定时更新】
  6. Android(安卓)Studio 更新SDK 腾讯镜像使用方法
  7. Android版本检测\自动更新 (转的别人的)
  8. Android(安卓)handler异步更新
  9. android引导页的实现 及跳转到主页面

随机推荐

  1. Android(安卓)根据Video绝对路径获取其缩
  2. INSTALL_FAILED_CONFLICTING_PROVIDER 安
  3. android settings命令
  4. Android.技术站点
  5. eclipse报错:This Android(安卓)SDK requi
  6. 【android】如何查看Android设备的CPU架
  7. [置顶] 我的Android进阶之旅------>Andro
  8. 启动android默认浏览器
  9. 经典button布局
  10. 去掉tabhost横线