안드로이드 앱 개발을 하다보면 특정 텍스트를 유저 클립보드에 복사시키고 싶을 때가 있다 이번 글에선 해당 기능을 구현하는 법에 대해 간단히 설명하겠다
구현 방법
구현 방법은 매우 간단한데 Kotlin으로는 아래와 같고
1
2
3
4
5
fun clipboardCopy(text: String) {
val clipboardManager = getSystemService(AppCompatActivity.CLIPBOARD_SERVICE) as ClipboardManager
val clipData = ClipData.newPlainText("label", text)
clipboardManager.setPrimaryClip(clipData)
}
Java로는 아래와 같이 할 수 있다
1
2
3
4
5
public void clipboardCopy(String text) {
ClipboardManager clipboardManager = (ClipboardManager) getSystemService(AppCompatActivity.CLIPBOARD_SERVICE);
ClipData clipData = ClipData.newPlainText("label", text);
clipboardManager.setPrimaryClip(clipData);
}
코드 설명
혹시나 해당 코드가 어떤 역할을 하는지 궁금한 사람을 위해서 각 부분을 나눠서 설명해보려고 한다
1. 클립보드 매니저 가져오기
1
val clipboardManager = getSystemService(AppCompatActivity.CLIPBOARD_SERVICE) as ClipboardManager
getSystemService(AppCompatActivity.CLIPBOARD_SERVICE)는 현재 Context에서 시스템 서비스 중 클립보드 서비스를 가져오는 메소드이다
ClipboardManager는 클립보드의 내용을 관리하는 클래스이며 AppCompatActivity.CLIPBOARD_SERVICE는 클립보드 서비스의 이름을 나타낸다
2. 클립 데이터 생성하기
1
val clipData = ClipData.newPlainText("label", text)
ClipData.newPlainText(“label”, text)는 ClipData 객체를 생성한다
“label” 부분은 클립보드에 저장될 데이터의 레이블을 지정하는 문자열이며 사용자에게 클립 데이터의 용도를 설명하는데 사용되는 부분이다 실제 크게 영향을 미치는 부분은 아니지만 클립보드를 관리하는 앱이나 디버깅 도구에서 데이터를 식별하는데 도움이 될 수 있다고 한다
text는 클립보드에 저장할 실제 문자열 데이터 부분이다 우리 코드에서는 함수의 매개변수로 받아서 넣고 있다
3. 클립 데이터 클립보드에 저장하기
1
clipboardManager.setPrimaryClip(clipData)
- clipboardManager.setPrimaryClip(clipData)는 클립보드에 clipData 객체를 저장하는 부분으로 setPrimaryClip 메소드는 클립보드의 주 클립(primary clip)을 설정하는 메소드기에 이 clipData가 현재 클립보드의 활성 데이터가 된다