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