반응형
반응형

오늘은 코틀린 언어를 사용해서 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

 

ListView  |  Android 개발자  |  Android Developers

 

developer.android.com

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  |  Android 개발자  |  Android Developers

 

developer.android.com

packageManager.getinstalledPackages() 함수는 패키지 정보를 반환합니다.

0으로 설정할 경우는 DIRECT_BOOT_AWARE로 설치된 앱 리스트만 리턴합니다.

만약 설치된 모든 리스트롤 확인하고 싶다면 MATCH_DIRECT_BOOT_UNAWARE로 입력하면 됩니다.

반환된 앱 정보를 사용해서 MainListAdapter에 item 리스트를 저장합니다.

 

컴파일 결과 설치된 앱 리스트를 아이콘과 함께 확인할 수 있습니다.

설치된 앱을 모두 확인하는 과정에서 조금 시간이 걸립니다.

이번 시간에는 아주 간단하게 ListView를 사용해서 설치된 앱 리스트를 확인했습니다.

감사합니다.

반응형

+ Recent posts