안녕하세요. 구글링도 해보고 별에 별 곳을 다녀봤지만
그냥 추측성 단서만 얻고 확실한 정보를 찾지 못하여서 이렇게 글을 남깁니다.
현재 Widget을 만들고 있는데 get<Type>Extra() 를 통하여 값을 제대로 가져오질 못하네요.
제가 이해를 잘못 하고있는건지 아닌지 모르겠네요.

문제가 나는 영역은 Widget에서 각 버튼에 대해서 이벤트를 처리하고자 다음과 같이 구성하였습니다.

private static final String INTENT_EXTRA_CONTACT1_MSG = "contact_1_send_msg";
private static final String INTENT_EXTRA_CONTACT2_MSG = "contact_2_send_msg";
private static final String INTENT_EXTRA_CONTACT3_MSG = "contact_3_send_msg";

private static int[] getAppWidgetIds(Context context) {
try {
final AppWidgetManager gm = AppWidgetManager.getInstance(context);
ComponentName thisWidget = ComponentName( context, ContactListWidget.class );
return gm.getAppWidgetIds(thisWidget);
     } catch (Exception e) {
e.printStackTrace();
}    
  return null;
}

onReceive()
{
...

if(action.equals(ACTION_CONTACT_MSG)) {
boolean[] isSelectContact = new boolean[3];
isSelectContact[0]= intent.getBooleanExtra(INTENT_EXTRA_CONTACT1_MSG, false);
Log.i(TAG,"onReceive, intent<INTENT_EXTRA_CONTACT1_MSG> : "+bundle.getBoolean(INTENT_EXTRA_CONTACT1_MSG));
isSelectContact[1]= bundle.getBoolean(INTENT_EXTRA_CONTACT2_MSG);
Log.i(TAG,"onReceive, intent<INTENT_EXTRA_CONTACT2_MSG> : "+bundle.getBoolean(INTENT_EXTRA_CONTACT2_MSG));
isSelectContact[2]= bundle.getBoolean(INTENT_EXTRA_CONTACT3_MSG);
Log.i(TAG,"onReceive, intent<INTENT_EXTRA_CONTACT3_MSG> : "+bundle.getBoolean(INTENT_EXTRA_CONTACT3_MSG));
if(isSelectContact[0] == true){
Toast.makeText(context, "Call Compose Message of 1st contact Activity", Toast.LENGTH_SHORT).show();
}
else if(isSelectContact[1] == true) {
Toast.makeText(context, "Call Compose Message of 2nd contact Activity", Toast.LENGTH_SHORT).show();
}
else if(isSelectContact[2] == true) {
Toast.makeText(context, "Call Compose Message of 3rd contact Activity", Toast.LENGTH_SHORT).show();
}
}
...
}
onUpdate()
{
PendingIntent pi;
Intent intent;
...

Uri data = Uri.withAppendedPath(Uri.parse(URI_SCHEME + URI_DATA), String.valueOf(widgetId));

Intent intent1 = new Intent(ACTION_CONTACT_MSG); intent1.setData(data); intent1.putExtra(INTENT_EXTRA_CONTACT1_MSG, true); PendingIntent pi1 = PendingIntent.getBroadcast(context, 0, intent1, PendingIntent.FLAG_UPDATE_CURRENT); rv.setOnClickPendingIntent(R.id.btn_Contact_1_Msg, pi1);

intent = new Intent(ACTION_CONTACT_MSG); intent.setData(data); intent.putExtra(INTENT_EXTRA_CONTACT2_MSG, true); pi = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); rv.setOnClickPendingIntent(R.id.btn_Contact_2_Msg, pi);

intent = new Intent(ACTION_CONTACT_MSG); intent.setData(data); intent.putExtra(INTENT_EXTRA_CONTACT3_MSG, true); pi = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); rv.setOnClickPendingIntent(R.id.btn_Contact_3_Msg, pi);

...
}

대충 안되는 부분만 코드를 옮겼습니다..
onReceive까지 호출이 되구요.
if문까지 들어옵니다.
문제는 
getBooleanExtra()를 통해 key가 
INTENT_EXTRA_CONTACT1_MSG
INTENT_EXTRA_CONTACT2_MSG
INTENT_EXTRA_CONTACT3_MSG
인 값들이 버튼 1을 2를 3을 터치해도 3번째만 true로 반환이 됩니다.

버튼이 적지 않아서 버튼마다 액션을 부여하기 싫어서 액션을 줄일 수 있으면 줄여보고자 저렇게 하였습니다.
액션을 한개만 사용해서 extra로 구분하려고 저렇게 코딩을 했는데

제가 뭘 잘못 이해한것일까요?
어떻게 하면 해결을 할 수 있을까요?
단지 버튼마다 모든 액션을 달리 부여하는 방법 밖에 없을까요?

아시는 분이 계시다면 꼭 
저에게 해결책을 알려주시면 감사하겠습니다. ㅡㅜ