안드로이드 개발 위젯 클릭(이벤트 연결) 으로 앱 실행하는 방법

 

환경: 갤럭시, Android Studio

 

대부분의 앱들은 위젯 기능을 지원합니다. 위젯(Widget) 은 컴퓨터에서 사용하던 용어인데, 웹 브라우저를 통하지 않고 날씨, 달력, 계산기 같은 기능을 바로 이용할 수 있도록 만든 프로그램입니다. 스마트폰에 위젯도 앱을 실행하지 않고 바탕화면에서 필요한 정보만을 한눈에 볼 수 있기 때문에 유용합니다. 자신이 만든 앱에서 위젯 기능을 추가하고 싶다면 간단하게 해결할 수 있습니다. 안드로이드 스튜디오에서 클릭 몇 번으로 만들 수 있기 때문입니다. 이번에는 바탕화면에 추가한 위젯창에 이벤트를 연결해서 앱을 실행해 보겠습니다.

 

그림처럼 앱에 위젯을 바탕화면에 추가합니다.

안드로이드 개발 위젯 클릭(이벤트 연결) 으로 앱 실행하는 방법

 

위젯 클래스인 NewAppWidget 에서 updateAppWidget() 함수는 화면 관련 레이아웃을 세팅합니다. Activity 에서 onCreate() 와 같습니다. 이곳에 App 실행을 위한 코드를 넣을 겁니다

안드로이드 개발 위젯 클릭(이벤트 연결) 으로 앱 실행하는 방법

 

위젯 레이아웃에 기본으로 들어가 있는 TextView 를 클릭하면 앱의 MainActivity 로 이동하도록 만들어 보겠습니다. 복잡하게 버튼을 추가하지 않겠습니다

안드로이드 개발 위젯 클릭(이벤트 연결) 으로 앱 실행하는 방법

 


NewAppWidget updateAppWidget() 함수에 전체 소스는 다음과 같습니다. Intent 부분은 Activity 에서 사용하던 방법과 다르지 않습니다. 주의해서 봐야 할 코드는 PendingIntent setOnClickPendingIntent() 입니다. startActivity() 가 아니라 화면을 이동하는데 사용하는 클릭 이벤트는 setOnClickPendingIntent() 입니다

static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                            int appWidgetId) {

    CharSequence widgetText = context.getString(R.string.appwidget_text);
    // Construct the RemoteViews object
    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
    views.setTextViewText(R.id.appwidget_text, widgetText);

    // 앱을 띄우고 MainActivity 로 이동한다.
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    intent.setComponent(new ComponentName(context, MainActivity.class));
    PendingIntent pi = PendingIntent.getActivity(context, 0, intent, 0);
    views.setOnClickPendingIntent(R.id.appwidget_text, pi);

    // Instruct the widget manager to update the widget
    appWidgetManager.updateAppWidget(appWidgetId, views);
}


소스를 적용한 결과는 다음과 같습니다. 그림처럼 위젯에 TextView 를 클릭하면 앱을 실행할 수 있습니다

안드로이드 개발 위젯 클릭(이벤트 연결) 으로 앱 실행하는 방법

Posted by 녹두장군