Notice
Recent Posts
Recent Comments
Link
투케이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///===========//: ================================================
반응형
'Android' 카테고리의 다른 글
Comments