AndroidWidget 실천 - Everyday Tips 개발(2)

4367 단어 android
어제의 이야기를 이어가겠습니다.
어제 이루어진 것은 죽은 widgetwidget일 뿐입니다. 정보를 표시하는 역할 외에 사용자와 상호작용을 해야 합니다. 이것이 바로 우리가 해야 할 일입니다.
그림처럼 (녹화가 잘 안 되네) 아르바이트 같은 거 하고 얘기하자.
좀 재밌었죠?사실 쉬워요.
먼저 Widget에 클릭 이벤트를 추가합니다.
package com.su.tipeveryday;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.provider.ContactsContract.CommonDataKinds.Note;
import android.util.Log;
import android.widget.RemoteViews;
import android.widget.TextView;
import android.widget.Toast;

public class TipEveryDayWidget extends AppWidgetProvider {

	@Override
	public void onDeleted(Context context, int[] appWidgetIds) {
		// TODO Auto-generated method stub
		super.onDeleted(context, appWidgetIds);
	}

	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {// widget       
		// TODO Auto-generated method stub
		super.onUpdate(context, appWidgetManager, appWidgetIds);

		// final int N = appWidgetIds.length;//    widget     ,    
		// Log.d("app", "onUpdate--->Ids===" + String.valueOf(N));
		// for (int i = 0; i < N; i++) {//        widget      (   id    )
		// int appWidgetId = appWidgetIds[i];
		// updateAppWidget(context, appWidgetManager, appWidgetId);//
		//   widget   
		// }
		
		updateAppWidget(context, appWidgetManager, appWidgetIds);//   widget   

	}

	private void updateAppWidget(Context context,
			AppWidgetManager appWidgetManager, int[] appWidgetIds) {
		// 1.1,     activity   intent

		RemoteViews views = new RemoteViews(context.getPackageName(),
				R.layout.widget_layout);
		String tip = Tips.getTips();//  Tips.java     
		views.setTextViewText(R.id.textViewWidget, tip);//   

		Intent intent = new Intent(context, TipEveryDayActivity.class);//          Activity 
		PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
				intent, 0);
		views.setOnClickPendingIntent(R.id.textViewWidget, pendingIntent);

		Intent intent2 = new Intent("com.su.ontipclick");//              ,      
		PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0,
				intent2, 0);
		views.setOnClickPendingIntent(R.id.buttonChange, pendingIntent2);

		appWidgetManager.updateAppWidget(appWidgetIds, views);//  widget     

	}

	public void onReceive(Context context, Intent intent) {

		if (intent.getAction().equals("com.su.ontipclick")) {
			Toast.makeText(context, "OK!!!!!", Toast.LENGTH_LONG).show();//           
			RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
					R.layout.widget_layout);//            appwidget      
			String tip = Tips.getTips();//  Tips.java     
			remoteViews.setTextViewText(R.id.textViewWidget, tip);
			AppWidgetManager appWidgetManager = AppWidgetManager
					.getInstance(context);//   appwidget    ,    appwidget        
			ComponentName componentName = new ComponentName(context,
					TipEveryDayWidget.class);//              appwidget
			appWidgetManager.updateAppWidget(componentName, remoteViews);

		}
		super.onReceive(context, intent);
	}

}

widget에서 이벤트를 등록하는 것은 비교적 번거롭지만, 사실은 은밀한 intent를 실현하기 때문에 Manifest에 이 intent를 등록해야 한다
  <receiver android:name=".TipEveryDayWidget" 
            android:label="AAAAAAAATip">
            <intent-filter >
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
                <action android:name="com.su.ontipclick"></action><!--      -->
            </intent-filter>

            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/widget_config" /><!--    widget     ,              copy -->
        </receiver>

맞다, 팁.java가 작은 처리를 했어요.
package com.su.tipeveryday;

public class Tips {
	public static Boolean flagBoolean =true;
	public static String getTips() {
		
		if (flagBoolean) {
			flagBoolean = false;
			return "       ,       ";
		}
		else {
			flagBoolean=true;
			return "       ,       ";
			
		}
		
	}
}

허허 못 알아보면 어쩔 수 없지

좋은 웹페이지 즐겨찾기