투케이2K

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

Android

691. (Android/Java) [유틸 파일] getClipboardList : 클립보드에 저장 된 데이터 리스트 확인 - ClipboardManager

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

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

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

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


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


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

            ClipboardManager clipboardManager = (ClipboardManager) mContext.getSystemService(CLIPBOARD_SERVICE);

            if (clipboardManager.hasPrimaryClip() == true){ // [저장된 데이터가 있는 경우]

                ClipDescription description = clipboardManager.getPrimaryClipDescription();
                ClipData data = clipboardManager.getPrimaryClip();

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

                    if (data.getItemCount() > 0){ // [한개 이상 저장된 경우]

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

                            for (int i=0; i<data.getItemCount(); i++){
                                returnData.add(data.getItemAt(i).getText().toString());
                            }
                            M_LOG = "[Success] :: ClipData getItem :: Multi";
                        }
                        else { // [단일 저장]
                            returnData.add(data.getItemAt(0).getText().toString());
                            M_LOG = "[Success] :: ClipData getItem :: Single";
                        }

                    }
                    else { // [저장된 것이 없는 경우]
                        M_LOG = "[Error] :: ClipData getItemCount Zero (0)";
                    }
                    
                }
                else {
                    M_LOG = "[Error] :: ClipData Is Null (Text Type)";
                }

            }
            else {
                M_LOG = "[Error] :: hasPrimaryClip false";
            }

        } catch (Exception e) {
            M_LOG = "[Exception] :: " + String.valueOf(e.getMessage());
            S_Log._printStackTrace_(mContext, S_FinalMsg.LOG_BUG_STATE, null, e);
        }


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


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

[결과 출력]

 

 

D///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.javaproject.C_App.getClipboardList(C_App.java:8986)]
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