Android 13 มีการเปลี่ยนแปลงลักษณะการทำงานที่อาจส่งผลต่อแอปของคุณเช่นเดียวกับรุ่นก่อนหน้า การเปลี่ยนแปลงลักษณะการทำงานต่อไปนี้จะมีผลกับแอปที่กำหนดเป้าหมายเป็น Android 13 ขึ้นไปเท่านั้น หากแอปกำหนดเป้าหมายเป็น Android 13 ขึ้นไป คุณควร แก้ไขแอปให้รองรับลักษณะการทำงานเหล่านี้อย่างเหมาะสมในกรณีที่เกี่ยวข้อง
อย่าลืมตรวจสอบรายการการเปลี่ยนแปลงลักษณะการทำงานที่มีผลกับแอปทั้งหมด ที่ทำงานบน Android 13 ด้วย
ความเป็นส่วนตัว
สิทธิ์การแจ้งเตือนมีผลต่อลักษณะที่ปรากฏของบริการที่ทำงานอยู่เบื้องหน้า
หากผู้ใช้ปฏิเสธสิทธิ์การแจ้งเตือน ผู้ใช้จะไม่เห็นประกาศที่เกี่ยวข้องกับบริการที่ทำงานอยู่เบื้องหน้าในลิ้นชักการแจ้งเตือน อย่างไรก็ตาม ผู้ใช้จะยังคงเห็นประกาศที่เกี่ยวข้องกับบริการที่ทำงานอยู่เบื้องหน้าใน ตัวจัดการงาน ไม่ว่าผู้ใช้จะให้สิทธิ์การแจ้งเตือนหรือไม่ก็ตาม
สิทธิ์รันไทม์ใหม่สำหรับอุปกรณ์ Wi-Fi ที่อยู่ใกล้เคียง
ใน Android เวอร์ชันก่อนหน้า ผู้ใช้ต้องให้สิทธิ์
ACCESS_FINE_LOCATION
แก่แอปของคุณเพื่อทำกรณีการใช้งาน Wi-Fi ทั่วไปหลายอย่างให้เสร็จสมบูรณ์
เนื่องจากผู้ใช้เชื่อมโยงสิทธิ์เข้าถึงตำแหน่งกับฟังก์ชันการทำงานของ Wi-Fi ได้ยาก Android 13 (API ระดับ 33) จึงเปิดตัวสิทธิ์รันไทม์ในกลุ่มสิทธิ์ NEARBY_DEVICES
สำหรับแอปที่จัดการการเชื่อมต่อของอุปกรณ์กับจุดเข้าใช้งานใกล้เคียงผ่าน Wi-Fi สิทธิ์นี้
NEARBY_WIFI_DEVICES
ตอบโจทย์กรณีการใช้งาน Wi-Fi เช่น กรณีต่อไปนี้
- ค้นหาหรือเชื่อมต่อกับอุปกรณ์ที่อยู่ใกล้เคียง เช่น เครื่องพิมพ์หรืออุปกรณ์แคสต์สื่อ
เวิร์กโฟลว์นี้ช่วยให้แอปของคุณทำงานต่อไปนี้ได้
- รับข้อมูล AP นอกแบนด์ เช่น ผ่าน BLE
- ค้นหาและเชื่อมต่อกับอุปกรณ์ผ่าน Wi-Fi Aware และเชื่อมต่อโดยใช้ฮอตสปอตในพื้นที่เท่านั้น
- ค้นหาและเชื่อมต่อกับอุปกรณ์ผ่าน Wi-Fi Direct
- เริ่มการเชื่อมต่อกับ SSID ที่รู้จัก เช่น รถยนต์หรืออุปกรณ์สมาร์ทโฮม
- เริ่มฮอตสปอตในพื้นที่เท่านั้น
- ช่วงสัญญาณไปยังอุปกรณ์ Wi-Fi Aware ที่อยู่ใกล้เคียง
ตราบใดที่แอปไม่ได้ดึงข้อมูลตำแหน่งจริงจาก Wi-Fi API ให้ขอ NEARBY_WIFI_DEVICES
แทน ACCESS_FINE_LOCATION
เมื่อกำหนดเป้าหมายเป็น Android 13 ขึ้นไปและใช้ Wi-Fi API เมื่อประกาศสิทธิ์ NEARBY_WIFI_DEVICES
ให้ยืนยันอย่างหนักแน่นว่าแอปของคุณจะไม่
ดึงข้อมูลตำแหน่งจริงจาก Wi-Fi API โดยตั้งค่าแอตทริบิวต์
android:usesPermissionFlags
เป็น neverForLocation
กระบวนการนี้คล้ายกับกระบวนการที่คุณทำใน Android 12 (API ระดับ 31) ขึ้นไปเมื่อคุณยืนยันว่าไม่มีการใช้ข้อมูลอุปกรณ์บลูทูธเพื่อเข้าถึงตำแหน่ง
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธี ขอสิทธิ์เข้าถึงอุปกรณ์ Wi-Fi ที่อยู่ใกล้เคียง
สิทธิ์ของสื่อแบบละเอียด
READ_MEDIA_AUDIO
สิทธิ์หากแอปกำหนดเป้าหมายเป็น Android 13 ขึ้นไปและต้องเข้าถึงไฟล์สื่อที่แอปอื่นสร้าง คุณต้องขอสิทธิ์สื่อแบบละเอียดต่อไปนี้อย่างน้อย 1 สิทธิ์แทนสิทธิ์ READ_EXTERNAL_STORAGE
ประเภทสื่อ | สิทธิ์ในการขอ |
---|---|
รูปภาพและภาพถ่าย | READ_MEDIA_IMAGES |
วิดีโอ | READ_MEDIA_VIDEO |
ไฟล์เสียง | READ_MEDIA_AUDIO |
ก่อนเข้าถึงไฟล์สื่อของแอปอื่น ให้ตรวจสอบว่าผู้ใช้ได้ให้สิทธิ์สื่อแบบละเอียดที่เหมาะสมแก่แอปของคุณแล้ว
รูปที่ 1 แสดงแอปที่ขอสิทธิ์ READ_MEDIA_AUDIO
หากคุณขอทั้งสิทธิ์ READ_MEDIA_IMAGES
และสิทธิ์
READ_MEDIA_VIDEO
พร้อมกัน กล่องโต้ตอบสิทธิ์ของระบบจะปรากฏขึ้นเพียงกล่องเดียว
หากก่อนหน้านี้แอปได้รับสิทธิ์
READ_EXTERNAL_STORAGE
แล้ว ระบบจะให้สิทธิ์ READ_MEDIA_*
ที่ขอโดยอัตโนมัติเมื่ออัปเกรด
คุณใช้คำสั่ง ADB ต่อไปนี้เพื่อตรวจสอบ
สิทธิ์ที่อัปเกรดแล้วได้
adb shell cmd appops get --uid PACKAGE_NAME
การใช้เซ็นเซอร์ร่างกายในเบื้องหลังต้องมีสิทธิ์ใหม่
Android 13 เปิดตัวแนวคิดการเข้าถึง "ขณะใช้งาน" สำหรับ เซ็นเซอร์ร่างกาย เช่น อัตราการเต้นของหัวใจ อุณหภูมิ และเปอร์เซ็นต์ออกซิเจนในเลือด รูปแบบการเข้าถึงนี้คล้ายกับรูปแบบที่ระบบเปิดตัวสำหรับตำแหน่ง ใน Android 10 (API ระดับ 29) เป็นอย่างมาก
หากแอปกำหนดเป้าหมายเป็น Android 13 และต้องเข้าถึงข้อมูลเซ็นเซอร์ร่างกายขณะทำงานในเบื้องหลัง คุณต้องประกาศสิทธิ์ใหม่
BODY_SENSORS_BACKGROUND
นอกเหนือจากสิทธิ์เดิม
BODY_SENSORS
ประสิทธิภาพและแบตเตอรี่
การใช้ทรัพยากรแบตเตอรี่
หากผู้ใช้นำแอปของคุณไปไว้ในสถานะ "ถูกจำกัด" สำหรับการใช้งานแบตเตอรี่อยู่เบื้องหลังขณะที่แอปกำหนดเป้าหมายเป็น Android 13 ระบบจะไม่ส่งBOOT_COMPLETED
Broadcast หรือ LOCKED_BOOT_COMPLETED
Broadcast จนกว่าจะมีการเริ่มแอปด้วยเหตุผลอื่นๆ
ประสบการณ์ของผู้ใช้
ส่วนควบคุมสื่อที่ได้รับมาจาก PlaybackState
สำหรับแอปที่กำหนดเป้าหมายเป็น Android 13 (API ระดับ 33) ขึ้นไป ระบบจะดึงข้อมูล
ตัวควบคุมสื่อจาก
PlaybackState
ซึ่งจะช่วยให้ระบบแสดงชุดตัวควบคุมที่สมบูรณ์ยิ่งขึ้นซึ่งมีความสอดคล้องกันในทางเทคนิคระหว่างโทรศัพท์และอุปกรณ์แท็บเล็ต รวมถึงสอดคล้องกับวิธีแสดงตัวควบคุมสื่อในแพลตฟอร์ม Android อื่นๆ เช่น Android Auto และ Android TV
รูปที่ 2 แสดงตัวอย่างลักษณะที่ปรากฏบนโทรศัพท์และแท็บเล็ต ตามลำดับ

ก่อน Android 13 ระบบจะแสดงการดำเนินการสูงสุด 5 รายการจากMediaStyle
การแจ้งเตือนตามลำดับที่เพิ่ม
ในโหมดกะทัดรัด เช่น ในการตั้งค่าด่วนที่ยุบอยู่ ระบบจะแสดงการดำเนินการสูงสุด 3 รายการที่ระบุด้วย setShowActionsInCompactView()
ตั้งแต่ Android 13 เป็นต้นไป ระบบจะแสดงปุ่มการดำเนินการสูงสุด 5 ปุ่มตาม PlaybackState
ตามที่อธิบายไว้ในตารางต่อไปนี้ ในโหมดกะทัดรัด ระบบจะแสดงเฉพาะช่องการดำเนินการ 3 ช่องแรก สำหรับแอปที่ไม่ได้กำหนดเป้าหมายเป็น Android 13 หรือแอปที่ไม่มี PlaybackState
ระบบจะแสดงตัวควบคุมตามรายการ Action
ที่เพิ่มลงในการแจ้งเตือน MediaStyle
ตามที่อธิบายไว้ในย่อหน้าก่อนหน้า
สล็อต | การทำงาน | เกณฑ์ |
---|---|---|
1 | เล่น |
สถานะปัจจุบันของ PlaybackState เป็นค่าใดค่าหนึ่งต่อไปนี้
|
วงล้อแสดงการโหลด |
สถานะปัจจุบันของ PlaybackState เป็นค่าใดค่าหนึ่งต่อไปนี้
|
|
หยุดชั่วคราว | สถานะปัจจุบันของ PlaybackState คือไม่มีข้อใดข้างต้น |
|
2 | ก่อนหน้า | PlaybackState actions มี ACTION_SKIP_TO_PREVIOUS |
กำหนดเอง | PlaybackState การดำเนินการไม่มี ACTION_SKIP_TO_PREVIOUS และPlaybackState การดำเนินการที่กำหนดเองมีการดำเนินการที่กำหนดเองที่ยังไม่ได้วาง |
|
ว่าง | PlaybackState extras มีtrue ค่าบูลีนสำหรับคีย์ SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_PREV |
|
3 | ถัดไป | PlaybackState actions มี ACTION_SKIP_TO_NEXT |
กำหนดเอง | PlaybackState การดำเนินการไม่มี ACTION_SKIP_TO_NEXT และPlaybackState การดำเนินการที่กำหนดเองมีการดำเนินการที่กำหนดเองที่ยังไม่ได้วาง |
|
ว่าง | PlaybackState extras มีtrue ค่าบูลีนสำหรับคีย์ SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_NEXT |
|
4 | กำหนดเอง | PlaybackState การกระทำที่กำหนดเองมีการกระทำที่กำหนดเองที่ยังไม่ได้วาง |
5 | กำหนดเอง | PlaybackState การกระทำที่กำหนดเองมีการกระทำที่กำหนดเองที่ยังไม่ได้วาง |
การทำงานที่กำหนดเองจะอยู่ในลำดับเดียวกับที่เพิ่มลงใน
PlaybackState
ใช้ธีมสีของแอปกับเนื้อหา WebView โดยอัตโนมัติ
สำหรับแอปที่กำหนดเป้าหมายเป็น Android 13 (API ระดับ 33) ขึ้นไป ระบบจะเลิกใช้งานเมธอด
setForceDark()
ซึ่งจะส่งผลให้ไม่มีการดำเนินการใดๆ หากมีการเรียกใช้เมธอด
แต่ตอนนี้ WebView จะตั้งค่า Media Query prefers-color-scheme
ตามแอตทริบิวต์ธีมของแอปเสมอ
isLightTheme
กล่าวอีกนัยหนึ่งคือ หาก isLightTheme
เป็น true
หรือไม่ได้ระบุ prefers-color-scheme
จะเป็น light
แต่หากไม่ใช่ prefers-color-scheme
จะเป็น dark
ลักษณะการทำงานนี้หมายความว่าระบบจะใช้สไตล์สว่างหรือมืดของเนื้อหาเว็บโดยอัตโนมัติให้ตรงกับธีมของแอป หากเนื้อหาสนับสนุน
สำหรับแอปส่วนใหญ่ ลักษณะการทำงานใหม่ควรใช้สไตล์แอปที่เหมาะสมโดยอัตโนมัติ อย่างไรก็ตาม คุณควรทดสอบแอปเพื่อตรวจสอบกรณีที่คุณอาจควบคุมการตั้งค่าดาร์กโหมดด้วยตนเอง
หากยังคงต้องปรับแต่งลักษณะการทำงานของธีมสีของแอป ให้ใช้เมธอด
setAlgorithmicDarkeningAllowed()
แทน เพื่อความเข้ากันได้แบบย้อนหลังกับ Android เวอร์ชันก่อนหน้า เราขอแนะนำให้ใช้เมธอด setAlgorithmicDarkeningAllowed()
ที่เทียบเท่าใน AndroidX
ดูเอกสารประกอบสำหรับวิธีการดังกล่าวเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับลักษณะการทำงานที่คุณคาดหวังได้ในแอป ทั้งนี้ขึ้นอยู่กับtargetSdkVersion
และการตั้งค่าธีมของแอป
การเชื่อมต่อ
เลิกใช้งาน BluetoothAdapter#enable() และ BluetoothAdapter#disable() แล้ว
สำหรับแอปที่กำหนดเป้าหมายเป็น Android 13 (API ระดับ 33) ขึ้นไป ระบบจะเลิกใช้งานเมธอด
BluetoothAdapter#enable()
และ
BluetoothAdapter#disable()
และจะ
แสดงผล false
เสมอ
แอปประเภทต่อไปนี้ได้รับการยกเว้นจากการเปลี่ยนแปลงเหล่านี้
- แอปเจ้าของอุปกรณ์
- แอปเจ้าของโปรไฟล์
- แอประบบ
บริการ Google Play
ต้องได้รับสิทธิ์สำหรับรหัสโฆษณา
แอปที่ใช้รหัสโฆษณาของบริการ Google Play และกำหนดเป้าหมายเป็น Android 13 (API ระดับ 33) ขึ้นไปต้อง
ประกาศสิทธิ์ทั่วไป AD_ID
ในไฟล์ Manifest ของแอป ดังนี้
<manifest ...>
<!-- Required only if your app targets Android 13 or higher. -->
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<application ...>
...
</application>
</manifest>
หากแอปไม่ได้ประกาศสิทธิ์นี้เมื่อกำหนดเป้าหมายเป็น Android 13 ขึ้นไป ระบบจะนำรหัสโฆษณาออกและแทนที่ด้วยสตริงเลข 0 โดยอัตโนมัติ
หากแอปใช้ SDK ที่ประกาศสิทธิ์ AD_ID
ในไฟล์ Manifest ของไลบรารี ระบบจะผสานสิทธิ์เข้ากับไฟล์ Manifest ของแอปโดยค่าเริ่มต้น ในกรณีนี้ คุณไม่จำเป็นต้องประกาศสิทธิ์ในไฟล์ Manifest ของแอป
ดูข้อมูลเพิ่มเติมได้ที่รหัสโฆษณาในศูนย์ช่วยเหลือของ Play Console
ข้อจำกัดที่ไม่ใช่ SDK ที่อัปเดตแล้ว
Android 13 มีรายการอินเทอร์เฟซที่ไม่ใช่ SDK ที่ถูกจำกัดซึ่งอัปเดตแล้ว โดยอิงตามการทำงานร่วมกับนักพัฒนาแอป Android และการทดสอบภายในล่าสุด เราจะตรวจสอบว่ามีทางเลือกสาธารณะ พร้อมใช้งานก่อนที่จะจำกัดอินเทอร์เฟซที่ไม่ใช่ SDK ทุกครั้งที่ทำได้
หากแอปไม่ได้กำหนดเป้าหมายเป็น Android 13 การเปลี่ยนแปลงบางอย่างเหล่านี้ อาจไม่มีผลกับคุณในทันที อย่างไรก็ตาม แม้ว่าปัจจุบันคุณจะใช้ อินเทอร์เฟซที่ไม่ใช่ SDK บางรายการได้ (ขึ้นอยู่กับระดับ API เป้าหมายของแอป) แต่การใช้วิธีการหรือฟิลด์ที่ไม่ใช่ SDK ใดๆ ก็ยังคงมีความเสี่ยงสูงที่จะทำให้แอป ขัดข้อง
หากไม่แน่ใจว่าแอปใช้อินเทอร์เฟซที่ไม่ใช่ SDK หรือไม่ คุณสามารถทดสอบแอป เพื่อดูได้ หากแอปของคุณใช้อินเทอร์เฟซที่ไม่ใช่ SDK คุณควรเริ่มวางแผน การย้ายข้อมูลไปยังทางเลือกอื่นของ SDK อย่างไรก็ตาม เราเข้าใจว่าแอปบางแอปมี Use Case ที่ถูกต้องสำหรับการใช้อินเทอร์เฟซที่ไม่ใช่ SDK หากไม่พบวิธีอื่นแทนการใช้อินเทอร์เฟซที่ไม่ใช่ SDK สำหรับฟีเจอร์ในแอป คุณควรขอ API สาธารณะใหม่
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงใน Android เวอร์ชันนี้ได้ที่การอัปเดต ข้อจํากัดของอินเทอร์เฟซที่ไม่ใช่ SDK ใน Android 13 ดูข้อมูลเพิ่มเติมเกี่ยวกับอินเทอร์เฟซที่ไม่ใช่ SDK โดยทั่วไปได้ที่ข้อจำกัดเกี่ยวกับอินเทอร์เฟซที่ไม่ใช่ SDK