📜 TIL

[Android/Kotlin] 내장 메모리의 Download 폴더 경로를 출력하는 앱 만들기

둥굴둥굴둥굴레차 2022. 10. 6. 15:53

개발하는 이유

회사 내 Embeded개발자분들이 개발을 진행하실 때 휴대폰 내부 Download폴더의 경로가 필요한 경우가 종종 있다.

그런데 휴대폰 제조사마다 Download 폴더 경로가 조금씩 다른 경우가 있기 때문에

매번 확인하기 번거로워 앱으로 간단히 만들었다.

 

 

내장 메모리 Download 폴더란?

안드로이드 폰의 [내 파일] 어플에 들어가면  [저장공간]이 쭉 나온다.

 

이 중 [내장메모리]로 들어가면 DCIM, Download, Music, Pictures 폴더가 보인다.

 

이 중 Download폴더가 위치한 경로를 출력해주는 앱을 개발해보려 한다.

 

레이아웃

Button을 누르면 해당 기기 Download폴더의 상대경로가 TextView에 출력되는 화면을 만들었다.

 

 

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    >

    <TextView
        android:id="@+id/Path"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textColor="@color/black"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        android:padding="20dp"
        android:textSize="20dp"
        />



    <Button
        android:id="@+id/Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Search"
        android:padding="20dp"
        app:layout_constraintTop_toBottomOf="@+id/Path"
        android:layout_marginTop="160dp"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
/>

</androidx.constraintlayout.widget.ConstraintLayout>

 

 

액티비티

 

레이아웃에서 만든 TextView와 Button을 가져와준다.

var path = findViewById<TextView>(R.id.Path)
var button = findViewById<Button>(R.id.Button)

 

환경변수에 접근이 가능하도록 만들어주는 Environment클래스!

이 클래스의 getExternalStoragePublicDirectory메서드를 이용해 path를 가져온다.

var downloadFileDir: String = Environment.getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS).path

 

Button을 눌렀을 때 TextView에 글자를 할당해주어 사용자에게 표시되도록 한다.

button.setOnClickListener {
        path.text = downloadFileDir
}

 

 

MainActivity.kt

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var path = findViewById<TextView>(R.id.Path)
        var button = findViewById<Button>(R.id.Button)

        var downloadFileDir: String = Environment.getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS).path

        button.setOnClickListener {
            path.text = downloadFileDir
        }
    }
}

 

결과물 영상

단, 어떤 에뮬레이터로 Test하건 결과값은 동일할 것이다.
Download폴더의 경로값이 다른 이유는 제조사마다 조금씩 다르기 때문이니까!