오늘은 코틀린 언어를 사용해서 Android에 설치된 모든 앱을 확인할 수 있는 프로그램을 만들어 보겠습니다.
코틀린(Kotlin)을 사용해서 설치된 안드로이드 앱을 확인하기 위해서는 많은 정보를 한눈에 확인할 수 있는 ListView를 사용하겠습니다.
안드로이드 ListView는 다양한 형태로 커스텀이 가능한 장점이 있습니다.
설치된 앱 이름과 아이콘을 ListView에 출력할 수 있는 구조로 만들어 보겠습니다.
먼저 ListView에 Item을 저장하기 위해서 새 파일 메뉴에서 kt class를 생성합니다.
item class에 String 변수 name과 Drawable 변수 image를 선언합니다.
package com.example.appcheck
import android.graphics.drawable.Drawable
class item ( val name : String, val image : Drawable )
코틀린에서 class를 만드는 방법은 다양하지만, 쉽게 사용할 수 있는 생성자 초기화를 사용했습니다.
함수가 필요할 경우 "{, }"를 사용해서 선언하면 됩니다.
생성된 item class를 UI와 연동하기 위해서 layout 파일이 필요합니다.
신규 파일에서 layout을 선택하고 "main_lv_item.xml"을 생성해주세요.
main_lv_item.xml 파일에서 LinearLayout 하단에 item과 매핑할 수 있는 ImageView, TextView를 한 개씩 선언합니다.
가장 중요한 내용은 위치를 잡기 위해서 app:layout_constraintStart_toEndOf, app:layout_constraintTop_toTopOf에ImageView id인 AppImg로 설정해주세요.
<?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" xmlns:app="http://schemas.android.com/apk/res-auto">
<ImageView
android:id="@+id/AppImg"
android:layout_width="52dp"
android:layout_height="52dp"
android:layout_marginBottom="4dp"
android:layout_marginStart="8dp"
android:layout_marginTop="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/ic_launcher_round" />
<TextView
android:id="@+id/processname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@+id/AppImg"
app:layout_constraintTop_toTopOf="@+id/AppImg"
/>
</LinearLayout>
class, layout이 설정되면 activity_main.xml에 ListView를 선언해주십시오.
ListView 사용법은 아래 링크를 참고해주세요.
developer.android.com/reference/android/widget/ListView
Android는 개발 관련 자료가 잘 정리되어 있어 공부하기 정말 좋습니다.
ListView는 id만 정확하게 입력하면 됩니다.
이젠 LisrView에 item을 연결하기 위한 Adapter가 필요합니다.
새 파일에서 코틀린(Kotlin) .kt class 파일을 생성해주세요.
기본적으로 BaseAdapter을 상속받아서 item Array에 item을 저장하면 됩니다.
BaseAdapter에서 사용하는 기본 함수를 override 해줍니다.
getView 함수에서 View를 호출하기 직전에 main_lv_item.xml에 입력된 name, image를 저장하는 구조입니다.
class MainListAdapter(val context: Context, val itemlist : ArrayList<item>) : BaseAdapter() {
override fun getView(p0: Int, p1: View?, p2: ViewGroup?): View {
val view:View = LayoutInflater.from(context).inflate(R.layout.main_lv_item, null)
val processname = view.findViewById<TextView>(R.id.processname)
val itemIcon = view.findViewById<ImageView>(R.id.AppImg)
val positem = itemlist[p0]
processname.text = positem.name
itemIcon.setImageDrawable(positem.image)
return view
}
override fun getItem(p0: Int): Any {
return itemlist[p0]
}
override fun getItemId(p0: Int): Long {
return 0
}
override fun getCount(): Int {
return itemlist.size
}
}
마지막으로 등록된 Adapter을 ListView에 연결해야 합니다.
MainActivity로 이동해주세요.
arrayListOf를 사용해서 item 리스트를 생성합니다.
설치된 앱을 확인하기 위해서는 packageManager을 사용해야 합니다.
developer.android.com/reference/android/content/pm/PackageManager#getInstalledPackages(int)
packageManager.getinstalledPackages() 함수는 패키지 정보를 반환합니다.
0으로 설정할 경우는 DIRECT_BOOT_AWARE로 설치된 앱 리스트만 리턴합니다.
만약 설치된 모든 리스트롤 확인하고 싶다면 MATCH_DIRECT_BOOT_UNAWARE로 입력하면 됩니다.
반환된 앱 정보를 사용해서 MainListAdapter에 item 리스트를 저장합니다.
컴파일 결과 설치된 앱 리스트를 아이콘과 함께 확인할 수 있습니다.
설치된 앱을 모두 확인하는 과정에서 조금 시간이 걸립니다.
이번 시간에는 아주 간단하게 ListView를 사용해서 설치된 앱 리스트를 확인했습니다.
감사합니다.
'IT 나라 > 코틀린(Kotlin)' 카테고리의 다른 글
코틀린 | Kotlin android Data Class 사용법 (0) | 2021.03.20 |
---|---|
코틀린 Kotlin android 디버깅 로그 사용법 (0) | 2021.03.19 |
코틀린 안드로이드 Unresolved reference: activity_main 오류 해결 (0) | 2021.02.15 |
코틀린 안드로이드 인트로 만들기 (0) | 2021.02.15 |
코틀린(Kotlin) Toast 사용법 (0) | 2021.01.28 |