투케이2K

436. (kotlin/코틀린) [유틸 파일] getClipboardList : 클립보드에 저장 된 데이터 리스트 확인 - ClipboardManager 본문

Kotlin

436. (kotlin/코틀린) [유틸 파일] getClipboardList : 클립보드에 저장 된 데이터 리스트 확인 - ClipboardManager

투케이2K 2023. 11. 15. 20:41

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [RETURN] getClipboardList : 클립보드에 저장 된 데이터 리스트 확인
        // -----------------------------------------------------------------------------------------
        fun getClipboardList(mContext: Context): ArrayList<String> {

            /**
             * // -----------------------------------------
             * [getClipboardList 메소드 설명]
             * // -----------------------------------------
             * 1. 클립보드에 저장 된 데이터 리스트 확인
             * // -----------------------------------------
             * 2. 호출 방식 :
             *
             * Handler(Looper.getMainLooper()).postDelayed({
             *
             *      C_App.getClipboardList(this)
             *
             * },500)
             *
             * // -----------------------------------------
             * 3. 리턴 데이터 : 클립 보드에 저장된 데이터 value
             * // -----------------------------------------
             * 4. TODO 주의점 :
             *
             * 클립보드에 데이터 저장 후 즉시, 저장된 리스트 확인 메소드 호출 시 >> clipboardManager.hasPrimaryClip false 값이 되므로
             * Handler 사용해 데이터 저장 후, 일정 딜레이 이후 확인 필요
             * // -----------------------------------------
             * 5. 참 고 : [클립 보드 데이터 저장 예시 코드]
             *
             * val clipboardManager = mContext.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
             * val clipData = ClipData.newPlainText("copy", data) //TODO 클립보드에 copy 라는 이름표로 데이터를 복사하여 저장
             * clipboardManager.setPrimaryClip(clipData)
             * // -----------------------------------------
             */


            // [리턴 값 선언]
            val returnData = ArrayList<String>()
            var M_LOG = ""


            // [로직 처리 실시]
            try {

                val clipboardManager = mContext.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
                M_LOG = if (clipboardManager.hasPrimaryClip() == true) { // [저장된 데이터가 있는 경우]
                    val description = clipboardManager.primaryClipDescription
                    val data = clipboardManager.primaryClip

                    // [저장된 클립보드 데이터가 널이 아니고, 타입이 텍스트 인 경우만 확인]
                    if (data != null && description != null && description.hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {
                        if (data.itemCount > 0) { // [한개 이상 저장된 경우]

                            // [다중 저장 및 단일 저장 체크]
                            if (data.itemCount > 1) { // [2 개 이상 저장]

                                for (i in 0 until data.itemCount) {
                                    returnData.add(data.getItemAt(i).text.toString())
                                }
                                "[Success] :: ClipData getItem :: Multi"

                            } else { // [단일 저장]

                                returnData.add(data.getItemAt(0).text.toString())
                                "[Success] :: ClipData getItem :: Single"
                            }

                        } else { // [저장된 것이 없는 경우]
                            "[Error] :: ClipData getItemCount Zero (0)"
                        }

                    } else {
                        "[Error] :: ClipData Is Null (Text Type)"
                    }

                } else {
                    "[Error] :: hasPrimaryClip false"
                }

            } catch (e: Exception) {
                M_LOG = "[Exception] :: " + e.message.toString()
                S_Log._printStackTrace_(mContext, S_FinalMsg.LOG_BUG_STATE, null, e)
            }


            // [로그 출력 실시]
            ///*
            // ===============================================================
            S_Log._D_("클립보드에 저장 된 데이터 리스트 확인", arrayOf(
                "M_LOG :: $M_LOG",
                "RETURN :: $returnData"
            ))
            // ===============================================================
            // */


            // [리턴 반환 실시]
            return returnData
        }

[결과 출력]

 

D///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.kotlinproject.C_App.getClipboardList]
I/: ----------------------------------------------------
I/: [LOG :: NOW TIME :: 2023-11-15 08:25:58 수요일]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 클립보드에 저장 된 데이터 리스트 확인]
I/: ----------------------------------------------------
I/: [LOG :: M_LOG :: [Success] :: ClipData getItem :: Single]
I/: ----------------------------------------------------
I/: [LOG :: RETURN :: [종료 [앱] 입니다!]]
D///===========//: ================================================

 

반응형
Comments