วิธีเพิ่มและแก้ไขรายชื่อติดต่อใน Android ที่เชื่อถือได้มากขึ้น
ใช้เวลาอ่าน 6 นาที
มีอะไรเปลี่ยนแปลงบ้าง
แอปที่กำหนดเป้าหมายเป็น 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 เบื้องต้นด้านล่าง
รูปที่ 1: สร้างรายชื่อติดต่อใหม่ *UX ไม่ใช่เวอร์ชันสุดท้าย*
รูปที่ 2: เพิ่มข้อมูลลงในรายชื่อติดต่อที่มีอยู่ *UX ไม่ใช่เวอร์ชันสุดท้าย*
หมายเหตุ: ผู้ผลิตอุปกรณ์รายต่างๆ อาจปรับเปลี่ยนประสบการณ์ของผู้ใช้ให้ตรงกับสไตล์ระบบปฏิบัติการของตน แต่ลักษณะการทำงานจะยังคงเหมือนเดิม
คุณสามารถปรับปรุงกระบวนการสร้างให้มีประสิทธิภาพยิ่งขึ้นได้โดยการส่งเพย์โหลดข้อมูลที่ไม่บังคับ ซึ่งเรียกว่า Extras ควบคู่ไปกับ Intent ดังนี้
EXTRA_ACCOUNTแนะนำบัญชีที่รายชื่อติดต่อจะบันทึกไว้ ซึ่งจะช่วยได้หากแอปของคุณซิงค์รายชื่อติดต่อ ส่วนเสริมนี้มีอยู่แล้ว แต่การรองรับจะแตกต่างกันไปตามอุปกรณ์ ตั้งแต่ Android รุ่นที่กำลังจะเปิดตัวเป็นต้นไป การรองรับจะเป็นมาตรฐานเดียวกันในอุปกรณ์ทุกเครื่องEXTRA_PHOTO_URIส่งรูปภาพเพื่อกรอกรูปภาพรายชื่อติดต่อล่วงหน้า เครื่องมือแก้ไขจะจัดการสิทธิ์อ่าน URI ให้คุณ ฟีเจอร์นี้เป็นฟีเจอร์ใหม่ใน 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) } หากคุณทราบอยู่แล้วว่าต้องการอัปเดตรายชื่อติดต่อใด ให้ใช้ 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 ตุลาคม 2026 | Google 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 ที่เหมาะสมได้
- Intent ของรายชื่อติดต่อจะทำงานในเวอร์ชันเก่าด้วย โดยแอปรายชื่อติดต่อของอุปกรณ์จะจัดการให้ แอปส่วนใหญ่จะทำงานได้ดีในอุปกรณ์ทั้งหมดที่ใช้ Intent เหล่านี้ หากแอปได้รับผลกระทบจากปัญหาความสอดคล้องที่เฉพาะเจาะจงซึ่งแก้ไขได้ในเวอร์ชันล่าสุดเท่านั้น คุณสามารถเก็บสิทธิ์
-
ข่าวสารเกี่ยวกับผลิตภัณฑ์ที่งาน Google I/O 2026 เราได้เปิดตัวการเปลี่ยน Android จากระบบปฏิบัติการไปเป็นระบบอัจฉริยะ นอกจากนี้ เรายังสาธิตวิธีสร้างประสบการณ์การใช้งานอัจฉริยะในระบบโดยตรงและนำความสามารถของ AI ของ Google มาใช้ในแอปของคุณ
Jingyu Shi • ใช้เวลาอ่าน 2 นาที -
ข่าวสารเกี่ยวกับผลิตภัณฑ์ในปีนี้ที่งาน Google I/O เราจะก้าวข้ามการเปลี่ยนแปลงแบบค่อยเป็นค่อยไป และมุ่งสู่การเปลี่ยนแปลงพื้นฐานในวิธีสร้างแอป เครื่องมือใหม่ล่าสุดของเราสร้างขึ้นสำหรับยุค Agentic โดยมีฟีเจอร์ที่ช่วยเพิ่มประสิทธิภาพการทำงานให้คุณในฐานะนักพัฒนาแอป Android และเพิ่มประสิทธิภาพให้ AI Agent ที่คุณนำไปใช้ในฐานของโค้ด
Matthew Warner • ใช้เวลาอ่าน 8 นาที -
ข่าวสารเกี่ยวกับผลิตภัณฑ์ในวันนี้ที่งาน The Android Show เราได้ประกาศว่า Android กำลังเปลี่ยนจากระบบปฏิบัติการเป็นระบบอัจฉริยะ ซึ่งจะสร้างโอกาสในการมีส่วนร่วมกับแอปของคุณมากขึ้น
Matthew McCullough • ใช้เวลาอ่าน 4 นาที
รับข้อมูลเชิงลึกเกี่ยวกับการพัฒนา Android ล่าสุดที่ส่งไปยังกล่องจดหมายของคุณทุกสัปดาห์