Android Studio Kotlin 選擇檔案

選擇檔案(不需要權限):
    
@Composable
fun SelectFile(modifier: Modifier = Modifier){

    val filePickerLauncher = rememberLauncherForActivityResult(
        contract = ActivityResultContracts.StartActivityForResult()
    ) { result ->
        if (result.resultCode == Activity.RESULT_OK) {
            val uri = result.data?.data
            Log.i(TAG, "SelectFile: 選擇的檔案 URI: $uri")
        }
    }

    Button(onClick = {
        val intent = Intent(Intent.ACTION_GET_CONTENT).apply {
            type = "*/*"
            addCategory(Intent.CATEGORY_OPENABLE)
        }
        filePickerLauncher.launch(intent)

    }) {
        Text(
            text = "Select File",
            modifier = modifier
        )
    }
}
    

選擇檔案並讀取檔案內容:
    
@Composable
fun SelectFile(context: Context, modifier: Modifier = Modifier) {

    val filePickerLauncher = rememberLauncherForActivityResult(
        contract = ActivityResultContracts.StartActivityForResult()
    ) { result ->
        if (result.resultCode == Activity.RESULT_OK) {
            val uri = result.data?.data
            Log.i(TAG, "SelectFile: 選擇的檔案 URI: $uri")

            val content = uri?.let { readTextFromUri(context, it) }
            Log.i(TAG, "SelectFile: 選擇的檔案內容: $content")
        }
    }

    Button(onClick = {
        val intent = Intent(Intent.ACTION_GET_CONTENT).apply {
            type = "*/*"
            addCategory(Intent.CATEGORY_OPENABLE)
        }
        filePickerLauncher.launch(intent)

    }) {
        Text(
            text = "Select File",
            modifier = modifier
                // 高度 50dp
                .height(50.dp)
        )
    }
}
    

使用方式:
    
SelectFile(context = this@MainActivity)
    

留言