[kotlin] 코틀린 데이터 바인딩을 사용하여 파일을 다운로드 및 업로드하는 방법

코틀린을 사용하여 안드로이드 앱을 개발할 때 파일을 다운로드하고 업로드하는 기능이 필요한 경우가 많습니다. 이러한 작업을 보다 효율적으로 처리하기 위해 코틀린 데이터 바인딩을 사용할 수 있습니다. 코틀린 데이터 바인딩은 XML 레이아웃 파일과 액티비티 또는 프래그먼트의 바인딩을 자동으로 생성하여 UI 컴포넌트에 쉽게 액세스할 수 있도록 도와줍니다.

파일 다운로드

코틀린을 사용하여 파일을 다운로드하려면 DownloadManager 클래스를 사용할 수 있습니다. 먼저 AndroidManifest.xml 파일에 인터넷 권한을 추가해야 합니다.

<uses-permission android:name="android.permission.INTERNET" />

그런 다음, 파일 다운로드를 처리할 액티비티나 프래그먼트에 코틀린 데이터 바인딩을 설정합니다.

val binding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)

파일을 다운로드할 때는 DownloadManager.Request를 만들고 DownloadManager를 통해 다운로드를 시작합니다.

val request = DownloadManager.Request(Uri.parse("file_url"))
val manager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
val downloadId = manager.enqueue(request)

다운로드가 완료되면 다운로드 이벤트를 수신할 수 있습니다.

val filter = IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)
val receiver: BroadcastReceiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        // 다운로드 완료 처리
    }
}
registerReceiver(receiver, filter)

파일 업로드

파일을 업로드하려면 OkHttp와 같은 라이브러리를 사용하여 네트워크 요청을 보내야 합니다. 먼저 build.gradle 파일에 OkHttp를 추가합니다.

implementation "com.squareup.okhttp3:okhttp:4.9.1"

다음으로, 업로드를 처리할 액티비티나 프래그먼트에 코틀린 데이터 바인딩을 설정합니다.

val binding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)

파일을 선택하여 업로드할 때는 Intent.ACTION_OPEN_DOCUMENT 인텐트를 사용하여 파일을 선택하고 OkHttp를 사용하여 선택한 파일을 서버에 업로드합니다.

val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
    addCategory(Intent.CATEGORY_OPENABLE)
    type = "*/*"
}
startActivityForResult(intent, 123)

파일 선택 결과를 다음과 같이 처리합니다.

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (requestCode == 123 && resultCode == Activity.RESULT_OK) {
        val uri = data?.data
        // 업로드 처리
    }
}

코틀린 데이터 바인딩을 사용하여 파일 다운로드 및 업로드를 효과적으로 처리할 수 있습니다.


참고 문헌:

  1. Android Developers - DownloadManager
  2. Android Developers - Open files using storage access framework
  3. Squareup - OkHttp