코틀린을 사용하여 안드로이드 앱을 개발할 때 파일을 다운로드하고 업로드하는 기능이 필요한 경우가 많습니다. 이러한 작업을 보다 효율적으로 처리하기 위해 코틀린 데이터 바인딩을 사용할 수 있습니다. 코틀린 데이터 바인딩은 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
// 업로드 처리
}
}
코틀린 데이터 바인딩을 사용하여 파일 다운로드 및 업로드를 효과적으로 처리할 수 있습니다.
참고 문헌:
- Android Developers - DownloadManager
- Android Developers - Open files using storage access framework
- Squareup - OkHttp