안녕하세요.
카카오 SDK 를 사용하고 있는 것은 아니지만 문의사항이 있습니다.
현재 앱에서 CSV 내보내기 기능이 있고, 생성 된 파일을 바로 공유하는 기능이 있는데 CSV 파일이 이메일 등으로 공유는 되지만 카카오톡으로는 Intent 를 통해서 공유가 되지 않고 “메세지 전송에 실패 하였습니다” Toast 메세지가 발생 합니다.
FileProvider 사용과 grantUriPermission() 를 통해 Uri 권한을 허용 하였는데 그 외에 Intent 에 추가로 전달해야 할 값이 있는지 궁금합니다.
제가 확인한 내용은 다음과 같습니다.
- 안드로이드 기기에서 Intent 를 통해 (ACTION_SEND) 직접 구현 하였을 때 공유x
- 3rd-party 파일매니저 (내 파일, 아스트로 등) 에서 공유하기 기능을 통해 csv 파일 공유x
- 카카오톡 앱 실행 후 메세지 창에서 “파일” → csv 파일 을 선택 시 csv 파일 전송 가능
- PC 환경에서는 csv 파일 전송 가능
- xls, pdf, ppt 등의 파일은 공유 가능
csv 파일 공유 시도 하였을 때 메세지 창 스크린샷 첨부 드립니다.
tim.l
2
안녕하세요.
카카오톡으로는 Intent 를 통해서 공유가 되지 않고
이부분이 어떻게 구현되어 있는지 구체적으로 설명해주시겠어요? 코드 블럭공유 부탁드립니다.
안녕하세요. ACTION_SEND intent 생성 부분 코드 첨부 합니다. 여기서 앱 선택기 → 카카오톡을 선택 시 “메세지 전송에 실패하였습니다” Toast 가 발생 합니다.
fun shareCsvFile() {
File("${getExternalDirPath()}/${Environment.DIRECTORY_DOWNLOADS}/$fileName").takeIf { it.exists() }?.run {
FileProvider.getUriForFile(requireContext(), "${BuildConfig.APPLICATION_ID}.provider", this)
}?.let { uri ->
val shareIntent = Intent(Intent.ACTION_SEND).apply {
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
putExtra(Intent.EXTRA_STREAM, uri)
type = "text/csv"
}
val resolveInfoList = requireActivity().packageManager.queryIntentActivities(shareIntent, PackageManager.MATCH_DEFAULT_ONLY)
resolveInfoList.forEach { resolveInfo ->
val packageName = resolveInfo.activityInfo.packageName
requireActivity().grantUriPermission(packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
}
startActivity(Intent.createChooser(shareIntent, getString(R.string.intent_chooser_title)))
} ?: toast(R.string.file_open_error)
}
tim.l
4
디벨로퍼스에서는 카카오톡 공유를 위한 인텐트 스킴은 안내하고 있지 않은데요.
기재해주신 코드로는 어떤 인텐트 스킴을 사용하셨는지 알수가 없네요.
디벨로퍼스에서 제공하는 공유하기 기능은 파일을 공유할 수는 없고 파일 링크를 공유할 수는 있습니다.
공식 제공하는 SDK방식이 아니라 안내드리기 어려운점 양해부탁드려요.
카카오톡 공유: Android | Kakao Developers 카카오톡 공유: Android
아네 친절한 답변 감사드립니다
해당 부분에 대해서는 기술 답변이나 지원 문의를 받을 수 있는 채널이 별도로 있을까요?
tim.l
6
안정적인 서비스를 위해 앱내 스킴은 일반적으로 공유하지 않기 때문에,
SDK를 사용하지 않으신다면
아쉽지만, 따로 기술지원은 받기 어려우실 것 같습니다.
1개의 좋아요