투케이2K

365. (kotlin/코틀린) [Android 13] [유틸 파일] get_Phone_Contract : 휴대폰에 저장된 연락처 확인 실시 - READ_CONTACTS 본문

Kotlin

365. (kotlin/코틀린) [Android 13] [유틸 파일] get_Phone_Contract : 휴대폰에 저장된 연락처 확인 실시 - READ_CONTACTS

투케이2K 2023. 7. 31. 08:20

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

 

        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [RETURN] save_Phone_Contract : 휴대폰에 연락처 저장 실시
        // -----------------------------------------------------------------------------------------
        fun save_Phone_Contract(mContext: Context, name: String, job: String, email: String, phoneNumber: String): Boolean {

            /**
             * // -----------------------------------------
             * [save_Phone_Contract 메소드 설명]
             * // -----------------------------------------
             * 1. 휴대폰에 연락처 저장 실시
             * // -----------------------------------------
             * 2. 호출 방식 :
             *
             * C_App.save_Phone_Contract(A_Intro@this, "투케이", "대리", "twok@com", "010-1234-5678")
             *
             * // -----------------------------------------
             * 3. 필요 퍼미션 : 사전 : WRITE_CONTACTS 권한을 사용자로부터 획득 필요
             *
             * <uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>
             * <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
             * // -----------------------------------------
             */


            // [리턴 변수 선언]
            var returnData = false
            var errorFlag = false
            var m_log = ""

            try {

                // [사전 퍼미션 권한 부여 상태 체크]
                if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED
                    && ContextCompat.checkSelfPermission(mContext, Manifest.permission.WRITE_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
                } else {
                    errorFlag = true
                    m_log = "[ERROR] : READ_CONTACTS / WRITE_CONTACTS : Permission Not Granted"
                }


                // [필수 파라미터 값 널 체크]
                if (C_Util.stringNotNull(name) === true && C_Util.stringNotNull(phoneNumber) === true) {
                } else {
                    errorFlag = true
                    m_log = "[ERROR] : name / phoneNumber : Data Is Null"
                }


                // [로직 수행 실시]
                if (errorFlag == false) {

                    val intent = Intent(ContactsContract.Intents.Insert.ACTION)
                    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
                    intent.type = ContactsContract.RawContacts.CONTENT_TYPE

                    intent.putExtra(ContactsContract.Intents.Insert.NAME, name) // TODO 이름

                    intent.putExtra(ContactsContract.Intents.Insert.PHONE, phoneNumber) // TODO 폰번호
                    intent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)

                    if (C_Util.stringNotNull(job) === true) {
                        intent.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, job) // TODO 직함
                    }

                    if (C_Util.stringNotNull(email) === true) {
                        intent.putExtra(ContactsContract.Intents.Insert.EMAIL, email) // TODO 이메일
                        intent.putExtra(ContactsContract.Intents.Insert.EMAIL_TYPE, ContactsContract.CommonDataKinds.Email.TYPE_OTHER)
                    }

                    mContext.startActivity(intent)

                    m_log = "[SUCCESS] : 휴대폰 번호 저장"
                    returnData = true
                }

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


            // [로그 출력 실시]
            //*
            // ===============================================================
            S_Log._D_("휴대폰에 연락처 저장 실시", arrayOf(
                "INPUT [name] :: $name",
                "INPUT [job] :: $job",
                "INPUT [email] :: $email",
                "INPUT [phoneNumber] :: $phoneNumber",
                "M_LOG :: $m_log",
                "RETURN :: $returnData"
            ))
            // ===============================================================
            // */


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

 

반응형
Comments