사용자 도구

사이트 도구


android:안드로이드에서_file_chooser_만들기
안드로이드에서 file chooser 만들기

1. GetContent() 로 만들기

가. 파일 대화 상자 불러 오기

다음 함수가 파일을 대화상자를 불러오는 함수이다.

    val pickPictureLauncher = rememberLauncherForActivityResult(
        ActivityResultContracts.GetContent())
    { hwpUri ->
        if (hwpUri != null) {
            // Update the state with the Uri
 
        }
    }

나. 호출하기

다음의 방식으로 호출한다.

pickPictureLauncher.launch("image/*")

2. 문서를 불러오기

문서는 OpenDocument()로 호출한다.

    val pickPictureLauncher = rememberLauncherForActivityResult(
        ActivityResultContracts.OpenDocument())
    { hwpUri ->
        if (hwpUri != null) {
            // Update the state with the Uri
 
        }
    }

3. 다양한 mime를 호출하기

다음과 같이 하면 GetContent()에 mime 제한자를 멀티플로 변경할 수 있다.

    class GetContentWithMultiFilter:ActivityResultContracts.GetContent() {
        override fun createIntent(context: Context, input:String): Intent {
            val inputArray = input.split(";").toTypedArray()
            val myIntent = super.createIntent(context, arrayOf("*/*"))
            myIntent.putExtra(Intent.EXTRA_MIME_TYPES, inputArray)
            return myIntent
        }
    }

4. 실 사용례

다음은 실제 사용례이다.

    val pickPictureLauncher = rememberLauncherForActivityResult(
        ActivityResultContracts.OpenDocument())
    { hwpUri ->
        if (hwpUri != null) {
            // Update the state with the Uri
            name = hwpUri.path.toString()
 
 
            val file: File = File(hwpUri.getPath()) //create path from uri
 
            val split = file.path.split(":".toRegex()).dropLastWhile { it.isEmpty() }
                .toTypedArray() //split the path.
 
            fname = split[1] //assign it to a string(your choice).
 
        }
    }
 
    Column (modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally){
        Image(painter = painterResource(id = imageResource),
            contentDescription = result.toString())
        Spacer(modifier = Modifier.height(16.dp))
        Text(text = name, fontSize = 24.sp, modifier = Modifier
            .fillMaxWidth()
            .wrapContentWidth(align = Alignment.CenterHorizontally)
            .padding(top = 16.dp))
        Text(text = fname, fontSize = 24.sp, modifier = Modifier
            .fillMaxWidth()
            .wrapContentWidth(align = Alignment.CenterHorizontally)
            .padding(top = 16.dp))
        Button(onClick = { pickPictureLauncher.launch(arrayOf("application/msword", "application/pdf", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"))  } ) {
            Text(text = stringResource(R.string.fileopen))
        }
 
    }
로그인하면 댓글을 남길 수 있습니다.

android/안드로이드에서_file_chooser_만들기.txt · 마지막으로 수정됨: 2023/08/03 23:33 저자 이거니맨