ข่าวสารเกี่ยวกับผลิตภัณฑ์

วิธีเพิ่มและแก้ไขรายชื่อติดต่อใน Android ที่เชื่อถือได้มากขึ้น

ใช้เวลาอ่าน 6 นาที
ดูโปรไฟล์ของ Roxanna Aliabadi Walker
Roxanna Aliabadi Walker ผู้จัดการผลิตภัณฑ์ Android

มีอะไรเปลี่ยนแปลงบ้าง

แอปที่กำหนดเป้าหมายเป็น Android รุ่นที่กำลังจะเปิดตัวจะไม่สามารถเขียนไปยังรายชื่อติดต่อโดยตรงด้วยสิทธิ์ WRITE_CONTACTS ได้อีกต่อไป แต่คุณสามารถใช้ Intent รายชื่อติดต่อมาตรฐาน (ACTION_INSERT, ACTION_EDIT และ ACTION_INSERT_OR_EDIT) แทนได้ ดูการติดตั้งใช้งานอ้างอิงที่สมบูรณ์ได้ในคู่มือนักพัฒนาซอฟต์แวร์เกี่ยวกับวิธีแก้ไขรายชื่อติดต่อโดยใช้ Intent 

ในอุปกรณ์ที่ใช้ Android รุ่นที่กำลังจะเปิดตัว Intent ของรายชื่อติดต่อทั้ง 3 รายการนี้จะทำงานอย่างสอดคล้องกันและไม่จำเป็นต้องมีสิทธิ์ใดๆ เลย หากแอปของคุณกำหนดเป้าหมายเป็น Android รุ่นที่กำลังจะเปิดตัวหรือใหม่กว่า และพยายามเขียนไปยังรายชื่อติดต่อโดยตรง การเขียนเหล่านั้นจะถูกปฏิเสธและส่งผลให้เกิด SecurityException หรือการปฏิเสธสิทธิ์ สำหรับแอปจำนวนไม่มากที่ต้องมีสิทธิ์เข้าถึงแบบกว้างเพื่อสร้างและแก้ไขรายชื่อติดต่อ สิทธิ์เข้าถึงพิเศษแบบใหม่ของแอป MANAGE_CONTACTS จะพร้อมใช้งานใน Android 17 QPR2 (ไตรมาสที่ 4 ปี 2026) วันนี้ Google Play จะเผยแพร่หลักเกณฑ์ที่ปรับปรุงใหม่สำหรับการเข้าถึงรายชื่อติดต่อ ซึ่งรวมถึงMANAGE_CONTACTS

เหตุผลที่เราดำเนินการนี้

ปัจจุบัน หากแอปของคุณต้องการบันทึกรายชื่อติดต่อแม้เพียงรายชื่อเดียว คุณอาจต้องขอสิทธิ์ WRITE_CONTACTS แต่สิทธิ์ดังกล่าวจะให้สิทธิ์เข้าถึงแบบกว้าง ซึ่งช่วยให้แอปทำการเปลี่ยนแปลงรายชื่อติดต่อในอุปกรณ์ในเบื้องหลังได้ในวงกว้าง แม้จะไม่มีการโต้ตอบของผู้ใช้ก็ตาม แอปส่วนใหญ่ไม่จำเป็นต้องใช้สิทธิ์ที่กว้างขนาดนี้

แม้ว่าจะมีทางเลือกอื่น แต่เราได้ยินจากคุณว่าทางเลือกเหล่านั้นต้องเป็นมาตรฐานมากขึ้นในระบบนิเวศ ก่อนหน้านี้ ความตั้งใจในการติดต่อจะทำงานแตกต่างกันไปในแต่ละอุปกรณ์ เครื่องมือแก้ไขบางรายการจะทิ้งข้อมูลที่คุณส่งเข้ามา เช่น รูปภาพรายชื่อติดต่อ ในอุปกรณ์บางเครื่อง ปุ่มย้อนกลับจะบันทึกรายชื่อติดต่อโดยที่ผู้ใช้ไม่ได้ตั้งใจ หรือตัวเลือก "สร้างรายชื่อติดต่อใหม่" ค้นหาได้ยาก ดังนั้นการขออนุญาตจึงเป็นทางเลือกที่สมเหตุสมผล เรากำลังแก้ไขปัญหาทั้งหมดนี้ใน Android เวอร์ชันที่กำลังจะเปิดตัว และกำหนดให้อุปกรณ์ที่ใช้ Android เวอร์ชันนี้ต้องปฏิบัติตามมาตรฐานเดียวกัน

สิ่งที่ควรใช้แทน

เพิ่มหรือแก้ไขรายชื่อติดต่อ: ใช้ Intent ของรายชื่อติดต่อ

เมื่อคุณใช้ Intent เหล่านี้ (ACTION_INSERT, ACTION_EDIT และ ACTION_INSERT_OR_EDIT) ระบบจะจัดการงานที่ซับซ้อนโดยนำเสนอประสบการณ์การแก้ไขรายชื่อติดต่อที่สะอาดตาและได้มาตรฐาน โดยจะเปิดแบบฟอร์มครึ่งหน้าอย่างรวดเร็วสำหรับรายการใหม่ หรือช่วยให้ผู้ใช้ค้นหาและเพิ่มข้อมูลลงในรายชื่อติดต่อที่มีอยู่ได้อย่างง่ายดาย ผู้ใช้สามารถขยายส่วนนี้เป็นเครื่องมือแก้ไขแบบเต็มหน้าเพื่อกรอกรายละเอียดเพิ่มเติมได้อย่างราบรื่น โดยที่แอปของคุณไม่จำเป็นต้องมีสิทธิ์เขียนโดยตรง ดูตัวอย่าง UX เบื้องต้นด้านล่าง 

Figure01_01_Quick_Insert_Half_Sheet_Prefilled.png
ภาพหน้าจอ 2 - ชื่อ: ภาพจำลองแบบเต็มหน้าจอของการสร้างรายชื่อติดต่อใหม่: ภาพหน้าจอของอินเทอร์เฟซผู้ใช้ Android เบื้องต้นที่แสดงเครื่องมือแก้ไขรายชื่อติดต่อแบบเต็มหน้าจอพร้อมตัวเลือกรูปโปรไฟล์ ช่องชื่อ โทรศัพท์ และอีเมล การออกแบบมีป้ายกำกับว่า "UX ยังไม่เสร็จสมบูรณ์"

รูปที่ 1: สร้างรายชื่อติดต่อใหม่  *UX ไม่ใช่เวอร์ชันสุดท้าย*

Figure02_01_Add_To_Existing_0_Search_State_Half_Sheet.png
ภาพหน้าจอ 2 - ชื่อ: ภาพจำลองแบบเต็มหน้าจอของ "เพิ่มข้อมูลลงในรายชื่อติดต่อที่มีอยู่": ภาพหน้าจอของอินเทอร์เฟซผู้ใช้ Android ชั่วคราวที่แสดงเครื่องมือแก้ไขรายชื่อติดต่อแบบเต็มหน้าจอพร้อมตัวเลือกรูปโปรไฟล์ ช่องชื่อ โทรศัพท์ และอีเมล การออกแบบแบบเต็มหน้าจะมีชิปการเปิดเผยแบบต่อเนื่องสำหรับช่องรอง การออกแบบมีป้ายกำกับว่า "UX ยังไม่เสร็จสมบูรณ์"

รูปที่ 2: เพิ่มข้อมูลลงในรายชื่อติดต่อที่มีอยู่ *UX ไม่ใช่เวอร์ชันสุดท้าย*


หมายเหตุ: ผู้ผลิตอุปกรณ์รายต่างๆ อาจปรับเปลี่ยนประสบการณ์ของผู้ใช้ให้ตรงกับสไตล์ระบบปฏิบัติการของตน แต่ลักษณะการทำงานจะยังคงเหมือนเดิม


คุณสามารถปรับปรุงกระบวนการสร้างให้มีประสิทธิภาพยิ่งขึ้นได้โดยการส่งเพย์โหลดข้อมูลที่ไม่บังคับ ซึ่งเรียกว่า Extras ควบคู่ไปกับ Intent ดังนี้

  • EXTRA_ACCOUNT แนะนำบัญชีที่รายชื่อติดต่อจะบันทึกไว้ ซึ่งจะช่วยได้หากแอปของคุณซิงค์รายชื่อติดต่อ ส่วนเสริมนี้มีอยู่แล้ว แต่การรองรับจะแตกต่างกันไปตามอุปกรณ์ ตั้งแต่ Android รุ่นที่กำลังจะเปิดตัวเป็นต้นไป การรองรับจะเป็นมาตรฐานเดียวกันในอุปกรณ์ทุกเครื่อง
  • EXTRA_PHOTO_URI ส่งรูปภาพเพื่อกรอกรูปภาพรายชื่อติดต่อล่วงหน้า เครื่องมือแก้ไขจะจัดการสิทธิ์อ่าน URI ให้คุณ ฟีเจอร์นี้เป็นฟีเจอร์ใหม่ใน Android เวอร์ชันที่กำลังจะเปิดตัว และจะรองรับทั่วทั้งระบบนิเวศ

ก่อน: เขียนโดยตรงด้วย WRITE_CONTACTS (ส่งผลให้เกิด SecurityException หรือการปฏิเสธสิทธิ์เมื่อแอปกำหนดเป้าหมายเป็น Android รุ่นที่กำลังจะเปิดตัว)

 

// Requires android.permission.WRITE_CONTACTS
fun saveContactDirectly(context: Context, name: String, phone: String, account: Account) {
    val ops = arrayListOf(
        ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, account.type)
            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, account.name)
            .build(),
        ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
            .withValue(
                ContactsContract.Data.MIMETYPE,
                ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE
            )
            .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name)
            .build(),
        ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
            .withValue(
                ContactsContract.Data.MIMETYPE,
                ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
            )
            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
            .build()
    )
    context.contentResolver.applyBatch(ContactsContract.AUTHORITY, ops)
}

 

 

หลังจากนั้น: เปิดเครื่องมือแก้ไขรายชื่อติดต่อ (ไม่จำเป็นต้องมีสิทธิ์)

 

fun saveContactWithEditor(
    context: Context,
    name: String,
    phone: String,
    account: Account,
    photoUri: Uri
) {
    val intent = Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI).apply {
        putExtra(ContactsContract.Intents.Insert.NAME, name)
        putExtra(ContactsContract.Intents.Insert.PHONE, phone)
        // Suggest which account the contact is saved to
        putExtra(ContactsContract.Intents.Insert.EXTRA_ACCOUNT, account)
        // New in the upcoming Android release: pre-fill the contact photo
        putExtra(ContactsContract.Intents.Insert.EXTRA_PHOTO_URI, photoUri)
        clipData = ClipData.newRawUri("", photoUri)
        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
    }
    context.startActivity(intent)
}

 

ก่อน: อัปเดตรายชื่อติดต่อที่มีอยู่โดยตรง

 

// Requires android.permission.WRITE_CONTACTS
fun addPhoneDirectly(context: Context, rawContactId: Long, phone: String) {
    val values = ContentValues().apply {
        put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId)
        put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
        put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
    }
    context.contentResolver.insert(ContactsContract.Data.CONTENT_URI, values)
}

หลังจากนั้น: ให้ผู้ใช้เลือกรายชื่อติดต่อที่จะอัปเดตหรือสร้างรายชื่อติดต่อใหม่

fun addPhoneWithEditor(context: Context, phone: String) {
    val intent = Intent(Intent.ACTION_INSERT_OR_EDIT).apply {
        type = ContactsContract.Contacts.CONTENT_ITEM_TYPE
        putExtra(ContactsContract.Intents.Insert.PHONE, phone)
    }
    context.startActivity(intent)
}

หากคุณทราบอยู่แล้วว่าต้องการอัปเดตรายชื่อติดต่อใด ให้ใช้ ACTION_EDIT กับ URI ของรายชื่อติดต่อนั้น ดังนี้

fun editKnownContact(context: Context, contactUri: Uri, phone: String) {
    val intent = Intent(Intent.ACTION_EDIT, contactUri).apply {
        putExtra(ContactsContract.Intents.Insert.PHONE, phone)
    }
    context.startActivity(intent)
}

 

เลือกรายชื่อติดต่อ: ใช้เครื่องมือเลือกรายชื่อติดต่อ

หากต้องการอ่านเฉพาะรายชื่อติดต่อที่ผู้ใช้เลือก ให้ใช้เครื่องมือเลือกรายชื่อติดต่อ ซึ่งพร้อมใช้งานตั้งแต่ Android 17 เป็นต้นไป ไม่จำเป็นต้องใช้สิทธิ์

แอปการโทรและแอปรับส่งข้อความ: ใช้ไดเรกทอรีผู้ใช้

แอปบางแอปจะเพิ่มการดำเนินการ "โทรด้วย…" หรือ "ส่งข้อความด้วย…" ลงในรายชื่อติดต่อเพื่อให้ผู้ใช้เริ่มการโทรหรือแชทจากแอปโทรศัพท์หรือแอปรายชื่อติดต่อได้ หากแอปของคุณดำเนินการเช่นนี้ในปัจจุบันโดยเขียนรายการเพิ่มเติมลงในรายชื่อติดต่อของผู้ใช้ ให้ย้ายไปที่ไดเรกทอรีผู้ใช้ ซึ่งจะพร้อมใช้งานใน Android QPR2 (ไตรมาสที่ 4 ปี 2026) ซึ่งเป็นไดเรกทอรีระบบใหม่ที่แอปของคุณจะเผยแพร่วิธีที่ผู้ใช้สามารถติดต่อกันในแอปได้โดยไม่ต้องแก้ไขรายชื่อติดต่อของผู้ใช้

ตัวอย่างวิธีที่แอปสามารถย้ายข้อมูล

ตัวอย่างต่อไปนี้แสดงให้เห็นว่าแอปประเภทต่างๆ สามารถเข้าถึงรายชื่อติดต่อได้อย่างไร เพื่อให้เห็นภาพว่าทางเลือกเหล่านี้ทำงานอย่างไรในทางปฏิบัติ

ตัวอย่างประเภทแอป (ไม่จำกัดเพียงเท่านี้)เส้นทางการย้ายข้อมูลที่แนะนำ
แอปโซเชียล แอปการชำระเงินแบบ P2P และแอปบริการร่วมเดินทางหากแอปของคุณช่วยให้ผู้ใช้ค้นหาเพื่อน แยกบิล หรือแชร์สถานะการเดินทาง คุณไม่จำเป็นต้องขอสิทธิ์เข้าถึงรายชื่อติดต่อเลย ใช้เครื่องมือเลือกรายชื่อติดต่อสำหรับการเลือกรายชื่อติดต่อแบบครั้งเดียว และเปิด ACTION_INSERT ด้วย EXTRA_PHOTO_URI เมื่อผู้ใช้แตะ "บันทึกลงในรายชื่อติดต่อ" ในโปรไฟล์
แอปสแกนนามบัตรและแอปสร้างเครือข่ายสำหรับกิจกรรมหากแอปของคุณสแกนป้ายหรือคิวอาร์โค้ดและบันทึกรายชื่อติดต่อใหม่ หรือเพิ่มหมายเลขโทรศัพท์ที่ทำงานลงในรายการของเพื่อนร่วมงานที่มีอยู่ ให้ใช้ ACTION_INSERT หรือ ACTION_INSERT_OR_EDIT เครื่องมือแก้ไขแบบครึ่งหน้ามาตรฐานจะกรอกข้อมูลล่วงหน้าในช่องที่แยกวิเคราะห์ (ชื่อ บริษัท โทรศัพท์ อีเมล และรูปภาพ) เพื่อให้ผู้ใช้ยืนยันและบันทึกได้ด้วยการแตะเพียงครั้งเดียวโดยไม่ต้องให้สิทธิ์ในเบื้องหลัง
แอปการโทรและแอปรับส่งข้อความผ่าน VoIPแทนที่จะขอให้ WRITE_CONTACTS แทรกแถว "โทรด้วย…" หรือ "ส่งข้อความด้วย…" ที่กำหนดเองลงในสมุดที่อยู่ของผู้ใช้ ให้เผยแพร่ข้อมูลเมตาความสามารถในการเข้าถึงผ่านไดเรกทอรีผู้ใช้ และใช้ ACTION_INSERT เมื่อผู้ใช้เพิ่มรายชื่อติดต่อใหม่จากชุดข้อความแชท
แอป CRM และการซิงค์ระบบคลาวด์สำหรับองค์กรหากแอปของคุณทำการซิงค์รายชื่อติดต่อในเบื้องหลังแบบ 2 ทางอย่างต่อเนื่องกับบัญชีระบบคลาวด์หรือบัญชีองค์กร ซึ่งการแจ้งเตือนผู้ใช้ด้วย Intent UI สำหรับทุกระเบียนเป็นไปไม่ได้ แอปของคุณจะมีสิทธิ์ประกาศ MANAGE_CONTACTS 

การเปลี่ยนแปลงที่ต้องตรวจสอบ

  • เครื่องมือแก้ไขไม่รองรับประเภทข้อมูลที่กำหนดเอง หากคุณส่งแถว Insert.DATA ที่มีประเภท MIME อื่นนอกเหนือจากประเภท ContactsContract.CommonDataKinds มาตรฐาน เครื่องมือแก้ไขจะละเว้นประเภท MIME เหล่านั้นโดยไม่แจ้งให้ทราบ
  • SHOW_OR_CREATE_CONTACT ไม่ได้จัดการโดยเครื่องมือแก้ไขระบบ แอปรายชื่อติดต่อที่มาพร้อมกับอุปกรณ์จะยังคงจัดการได้ ใช้ ACTION_INSERT_OR_EDIT เพื่อให้ลักษณะการทำงานสอดคล้องกันในอุปกรณ์ต่างๆ
  • การเขียนจะล้มเหลวโดยค่าเริ่มต้น เมื่อคุณกำหนดเป้าหมายเป็น Android รุ่นที่กำลังจะเปิดตัว การเขียนโดยตรงที่ไม่มี MANAGE_CONTACTS จะส่งผลให้เกิด SecurityException or permission denial ทดสอบ

ฉันต้องใช้ MANAGE_CONTACTS ไหม

อาจจะไม่ หากแอปบันทึกหรือแก้ไขรายชื่อติดต่อเนื่องจากผู้ใช้ขอให้ทำ Intent ข้างต้นจะครอบคลุมคุณ โดยไม่ต้องมีสิทธิ์และไม่ต้องประกาศใน Play Console

MANAGE_CONTACTS มีไว้สำหรับแอปที่มีวัตถุประสงค์หลักในการจัดการรายชื่อติดต่อ ซึ่ง Intent ไม่เพียงพอ เช่น

แอปของคุณ…หากต้องการMANAGE_CONTACTS
บันทึกรายชื่อติดต่อจากแชท นามบัตร หรือคำสั่งซื้อไม่ ใช้ ACTION_INSERT
เพิ่มหมายเลขหรืออีเมลลงในรายชื่อติดต่อที่มีอยู่ไม่ ให้ใช้ ACTION_INSERT_OR_EDIT หรือ ACTION_EDIT
ช่วยให้ผู้ใช้เลือกรายชื่อติดต่อเพื่อเชิญ แชร์ด้วย หรือชำระเงินได้ไม่ ให้ใช้เครื่องมือเลือกรายชื่อติดต่อ
เพิ่มการดำเนินการโทรหรือส่งข้อความไปยังรายชื่อติดต่อไม่ ใช้ไดเรกทอรีผู้ใช้
มีหน้าจอแก้ไขรายชื่อติดต่อที่มีแบรนด์ของตัวเองไม่ อินเทอร์เฟซที่กำหนดเองเพียงอย่างเดียวไม่มีสิทธิ์
เป็นแอปจัดการรายชื่อติดต่อหรือแอปโทรศัพท์ที่ใช้แทนแอปโทรศัพท์ที่มากับเครื่องโดยเฉพาะมีแนวโน้มว่าใช่
เป็นแอปบริการระบุตัวตนผู้โทรและการป้องกันสแปมที่อัปเดตรายการในสมุดที่อยู่เป็นจำนวนมากมีแนวโน้มว่าใช่
ซิงค์รายชื่อติดต่อกับบัญชีองค์กรหรือบัญชีระบบคลาวด์ในเบื้องหลังมีแนวโน้มว่าใช่
ดำเนินการสำรอง/กู้คืนรายชื่อติดต่อจำนวนมากหรือโอนข้อมูลโทรศัพท์จากอุปกรณ์เครื่องหนึ่งไปยังอีกเครื่องหนึ่งมีแนวโน้มว่าใช่
ตั้งค่าเสียงเรียกเข้าที่กำหนดเองสำหรับรายชื่อติดต่อแต่ละรายมีแนวโน้มว่าใช่

วิธีการทำงาน

  • MANAGE_CONTACTS เป็นสิทธิ์เข้าถึงแบบพิเศษสำหรับแอป ซึ่งไม่ใช่กล่องโต้ตอบรันไทม์ ผู้ใช้สามารถเปิดใช้ได้ในส่วนการตั้งค่า > สิทธิ์เข้าถึงพิเศษของแอป > จัดการรายชื่อติดต่อ
// Opens Settings > Apps > Special app access > Manage contacts
val intent = Intent(Settings.ACTION_MANAGE_CONTACTS, Uri.fromParts("package", packageName, null))
context.startActivity(intent)
  • ซึ่งครอบคลุมการอ่าน การเพิ่ม การแก้ไข และการลบรายชื่อติดต่อ บัญชี และข้อมูลไดเรกทอรีผู้ใช้ คุณไม่จำเป็นต้องขอ READ_CONTACTS ด้วย
  • หากต้องการเผยแพร่ใน Google Play ด้วย MANAGE_CONTACTS คุณต้องส่งประกาศใน Play Console เพื่ออธิบายว่าเหตุใด Intent จึงไม่เพียงพอสำหรับฟังก์ชันหลักของแอป

ขั้นตอนการย้ายข้อมูล

  • ค้นหาการเขียนรายชื่อติดต่อ ค้นหาโค้ด WRITE_CONTACTS, ContactsContract.RawContacts.CONTENT_URI, ContactsContract.Data.CONTENT_URI และ applyBatch(ContactsContract.AUTHORITY, …)
  • แทนที่การเขียนที่ขับเคลื่อนโดยผู้ใช้แต่ละรายการด้วย Intent: ACTION_INSERT สำหรับรายชื่อติดต่อใหม่ และ ACTION_EDIT หรือ ACTION_INSERT_OR_EDIT สำหรับการอัปเดต
  • ใช้เฉพาะประเภทข้อมูลมาตรฐานใน Insert.DATA ย้ายการดำเนินการเกี่ยวกับการโทรหรือข้อความไปยังไดเรกทอรีผู้ใช้
  • ตัดสินใจว่าคุณจำเป็นต้องใช้ MANAGE_CONTACTS จริงๆ หรือไม่โดยใช้ตารางด้านบน หากมี ให้วางแผนการประกาศใน Play Console
  • นำ WRITE_CONTACTS ออกจากไฟล์ Manifest เมื่อไม่มีเส้นทางโค้ดที่ต้องใช้

ไทม์ไลน์

กำหนดเวลาสิ่งที่เกิดขึ้น
21 ตุลาคม 2026Google Play ประกาศนโยบายMANAGE_CONTACTS
2026 (Android 17 Quarterly Platform Release 2)สิทธิ์ MANAGE_CONTACTS พร้อมใช้งาน
2027 (Android เวอร์ชันที่กำลังจะเปิดตัว)WRITE_CONTACTS จะไม่ให้สิทธิ์การเขียนแก่แอปที่กำหนดเป้าหมายเป็น Android รุ่นที่กำลังจะเปิดตัวอีกต่อไป Intent ของรายชื่อติดต่อเป็นมาตรฐานในอุปกรณ์ต่างๆ
2027 โดยไม่เร็วกว่า Android รุ่นที่กำลังจะเปิดตัวPlay Console ขอให้แอปที่ใช้ MANAGE_CONTACTS ส่งการประกาศ
2027 ไม่เร็วกว่า Android รุ่นที่กำลังจะเปิดตัวต้องปฏิบัติตามนโยบายของ Play

คำถามที่พบบ่อย

  • การเปลี่ยนแปลงนี้ส่งผลต่อทุกแอปไหม
    • การเปลี่ยนแปลงการเลิกใช้งาน WRITE_CONTACTS จะมีผลกับแอปที่กำหนดเป้าหมายเป็น Android รุ่นที่กำลังจะเปิดตัวและรุ่นหลังจากนั้นเท่านั้น แอปที่กำหนดเป้าหมายเป็นเวอร์ชันเก่าจะยังคงทำงานตามลักษณะการทำงานปัจจุบัน อย่างไรก็ตาม เครื่องมือแก้ไขรายชื่อติดต่อที่ได้มาตรฐานใหม่จะพร้อมใช้งานสำหรับแอปทั้งหมดที่ทำงานบนระบบปฏิบัติการใหม่ ไม่ว่า SDK เป้าหมายจะเป็นเวอร์ชันใดก็ตาม
  • แอปของฉันลบรายชื่อติดต่อด้วย Intent ได้ไหม
    • ไม่ ไม่มีเจตนาในการลบรายชื่อติดต่อ ผู้ใช้ลบรายชื่อติดต่อในแอปรายชื่อติดต่อ แอปที่มี MANAGE_CONTACTS จะลบรายชื่อติดต่อได้โดยตรง
  • ฉันมีหน้าจอแก้ไขรายชื่อติดต่อของตัวเองอยู่แล้ว ฉันจะเก็บไว้ได้ไหม
    • เฉพาะในกรณีที่แอปของคุณมีสิทธิ์ใช้ MANAGE_CONTACTS การต้องการคงการออกแบบที่กำหนดเองไว้เพียงอย่างเดียวไม่ถือเป็นเหตุผลที่เข้าเกณฑ์
  • MANAGE_CONTACTS จะมาแทนที่ READ_CONTACTS ไหม
    • MANAGE_CONTACTS รวมสิทธิ์การอ่านไว้ด้วย คุณจึงไม่จำเป็นต้องขอทั้ง 2 สิทธิ์ แต่แอปจำนวนมากมีสิทธิ์ใช้ READ_CONTACTS โดยไม่จำเป็นต้องแก้ไขรายชื่อติดต่อเลย แอปเหล่านี้อาจยังคงขอREAD_CONTACTSต่อไป
  • จะเกิดอะไรขึ้นกับผู้ใช้ที่ใช้ Android เวอร์ชันเก่า
    • Intent ของรายชื่อติดต่อจะทำงานในเวอร์ชันเก่าด้วย โดยแอปรายชื่อติดต่อของอุปกรณ์จะจัดการให้ แอปส่วนใหญ่จะทำงานได้ดีในอุปกรณ์ทั้งหมดที่ใช้ Intent เหล่านี้ หากแอปได้รับผลกระทบจากปัญหาความสอดคล้องที่เฉพาะเจาะจงซึ่งแก้ไขได้ในเวอร์ชันล่าสุดเท่านั้น คุณสามารถเก็บสิทธิ์ WRITE_CONTACTS ไว้ในไฟล์ Manifest ที่กำหนดขอบเขตด้วย maxSdkVersion ที่เหมาะสมได้
เขียนโดย
อ่านต่อ