標籤:
添加Widget在此之前需要做一些處理操作,可以使用 配置活動
在上一篇的實現基礎上,加上配置活動(configure=activity)。這時加入Widget時。會先開啟一個Activity,進行配置操作,
<appwidget-provider....android:configure="com.stone.ui.AppWidgetConfigureActivity" ></appwidget-provider>
配置活動的實現:
package com.stone.ui;import android.app.Activity;import android.appwidget.AppWidgetHost;import android.appwidget.AppWidgetManager;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import com.stone.R;/* * 配置組件 * 在onCreate中setContentView()函數前加入setResult(RESULT_CANCLE) ,這樣假設在Activity初始化完畢前按下了BACK按鍵,則Widget不會啟動; * 在setContentView()函數之後(不一定要在onCreate中。在Activity退出前就可以),加入例如以下設定以指定須要啟動的Widget */public class AppWidgetConfigureActivity extends Activity implements OnClickListener {Button config1, config2, config3;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Intent intent = getIntent();Bundle extras = intent.getExtras();if (extras != null) {int widgetid = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);//從intent中得出widgetid//通知 appwdiget 的配置已取消Intent reslut = new Intent();reslut.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetid);setResult(RESULT_CANCELED, reslut);System.out.println("result cancel");}setContentView(R.layout.switch_configure);config1 = (Button) findViewById(R.id.btn_config1);config2 = (Button) findViewById(R.id.btn_config2);config3 = (Button) findViewById(R.id.btn_config3);config1.setOnClickListener(this);config2.setOnClickListener(this);config3.setOnClickListener(this);}@Overrideprotected void onResume() {super.onResume();}private void onCompletedConfigure() {Intent intent = getIntent();Bundle extras = intent.getExtras();if (extras != null) {int widgetid = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);//從intent中得出widgetid//通知 appwdiget 的配置已完畢Intent reslut = new Intent();reslut.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetid);setResult(RESULT_OK, reslut);System.out.println("result ok");finish();System.out.println("finish ok");}}@Overridepublic void onClick(View v) {if (v == config1) {//do config1} else if (v == config2) {//do config2} else if (v == config3) {//do config3}onCompletedConfigure();}}
switch_configure.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/btn_config1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="config1"/><Button android:id="@+id/btn_config2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="config2"/><Button android:id="@+id/btn_config3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="config3"/></LinearLayout>
著作權聲明:本文部落格原創文章,部落格,未經同意,不得轉載。
Android Widget 小工具(兩) 使用configure