안드로이드 개발 위젯 클릭(이벤트 연결) 으로 앱 실행하는 방법 |
환경: 갤럭시, 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 를 클릭하면 앱을 실행할 수 있습니다.
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) 현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다. 에러 났을 때 (0) | 2018.11.28 |
---|---|
안드로이드 개발 Wear(웨어러블) 앱 프로젝트 만드는 방법 (0) | 2018.11.07 |
안드로이드 개발 Socket IO 사용해서 Node JS 서버와 통신하는 방법 (0) | 2018.11.06 |
안드로이드 개발 ERROR x86 emulation currently requires hardware acceleration 에러 (0) | 2018.10.17 |
안드로이드 개발 Fragment 화면 구성하는 방법 - FragmentActivity 로 화면 구성 (0) | 2018.09.18 |
안드로이드 개발 Fragment 와 Activity 의 통신하는 방법 (1) | 2018.08.31 |
안드로이드 개발 ArrayList 배열 개체를 JSON 으로 변경하는 방법 (1) | 2018.08.28 |
안드로이드 개발 간단하게 위젯 만드는 방법 (0) | 2018.08.15 |