복사하여 붙여넣기

Android 13부터 시스템에서는 콘텐츠가 클립보드에 추가될 때 표준 시각적 확인 메시지를 표시합니다. 새 확인 메시지를 통해 다음 작업이 실행됩니다.

  • 콘텐츠가 복사되었는지 확인합니다.
  • 복사된 콘텐츠의 미리보기를 제공합니다.

Android 12L(API 수준 32) 이하에서는 사용자가 성공적으로 콘텐츠를 복사한 시점이나 복사한 내용을 잘 모르는 경우가 많습니다.

이 기능은 복사 후 앱에서 표시하는 다양한 알림을 표준화하고 사용자가 클립보드를 더 세부적으로 제어할 수 있도록 합니다.

위젯 복사/붙여넣기
그림 1: 콘텐츠가 클립보드에 들어갈 때 표시되는 새 UI
위젯 복사/붙여넣기 분석: 교차 기기 미리보기, 공유, 전송
그림 2: 위젯 복사/붙여넣기 분석: 교차 기기 미리보기, 공유, 전송

중복 알림 피하기

정보가 중복으로 표시되지 않도록 하려면 Android 13 이상에서는 인앱 사본 뒤에 표시되는 팝업 알림을 모두 삭제하는 것이 좋습니다.

인앱 사본 뒤에 스낵바 게시
그림 3: Android 13에서 사본 확인 스낵바를 표시하면 사용자에게 중복 메시지가 표시됨
인앱 사본 뒤에 토스트 메시지 게시
그림 4: Android 13에서 사본 확인 토스트 메시지를 표시하면 사용자에게 중복 메시지가 표시됨

Android 13에서 중복 사본 확인 UI를 표시하지 않으려면 다음 예와 같은 코드를 사용해 보세요.


  fun textCopyThenPost(textCopied:String) {
    val clipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
    // When setting the clip board text.
    clipboardManager.setPrimaryClip(ClipData.newPlainText("", textCopied))
    // Only show a toast for Android 12 and lower.
    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2)
      Toast.makeText(context, “Copied”, Toast.LENGTH_SHORT).show()
  }

Android 13 이상에서는 텍스트를 클립보드에 복사한 후 팝업 메시지를 포함하지 않아도 됩니다.

클립보드에 민감한 콘텐츠 추가

앱에서 사용자가 민감한 콘텐츠(예: 비밀번호나 신용카드 정보)를 클립보드에 복사할 수 있도록 허용하는 경우 ClipboardManager#setPrimaryClip()을 호출하기 전에 ClipData의 ClipDescription에 플래그를 추가해야 합니다. 이 플래그를 추가하면 민감한 콘텐츠가 콘텐츠 미리보기에 표시되지 않습니다.

민감한 콘텐츠를 신고하지 않은 복사된 텍스트 미리보기
그림 5: 민감한 콘텐츠를 신고하지 않은 복사된 텍스트 미리보기
민감한 콘텐츠를 신고하는 복사된 텍스트 미리보기
그림 6: 민감한 콘텐츠를 신고하는 복사된 텍스트 미리보기

민감한 콘텐츠를 신고하려면 ClipDescription에 불리언 추가 항목을 추가하세요. 모든 앱은 타겟팅된 API 수준과 관계없이 이 작업을 실행해야 합니다.


// When your app targets API level 33 or higher
clipData.apply {
    description.extras = PersistableBundle().apply {
        putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true)
    }
}

// If your app targets a lower API level
clipData.apply {
    description.extras = PersistableBundle().apply {
        putBoolean("android.content.extra.IS_SENSITIVE", true)
    }
}