เช่นเดียวกับรุ่นก่อนหน้านี้ 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 เปิดตัวแนวคิด "ขณะใช้งาน" สิทธิ์การเข้าถึงสำหรับ เซ็นเซอร์ร่างกาย เช่น อัตราการเต้นของหัวใจ อุณหภูมิ และเปอร์เซ็นต์ออกซิเจนในเลือด ช่วงเวลานี้ รูปแบบการเข้าถึงคล้ายกับรูปแบบที่ระบบแนะนำสำหรับ location ใน Android 10 (API ระดับ 29)
หากแอปกำหนดเป้าหมายเป็น Android 13 และต้องการเข้าถึงเซ็นเซอร์ร่างกาย
ขณะทำงานในพื้นหลัง คุณต้องประกาศฟิลด์
BODY_SENSORS_BACKGROUND
นอกเหนือไปจาก
BODY_SENSORS
สิทธิ์
ประสิทธิภาพและแบตเตอรี่
การใช้ทรัพยากรแบตเตอรี่
หากผู้ใช้วางแอปของคุณไว้ในส่วน
"จำกัด" State สำหรับ
การใช้งานแบตเตอรี่ในเบื้องหลัง
แม้ว่าแอปกำหนดเป้าหมายเป็น Android 13 ระบบจะไม่นำส่ง
BOOT_COMPLETED
หรือ LOCKED_BOOT_COMPLETED
จนถึง
แอปเริ่มทำงานด้วยเหตุผลอื่น
ประสบการณ์ของผู้ใช้
การควบคุมสื่อที่ได้มาจาก PlaybackState
สำหรับแอปที่กำหนดเป้าหมายเป็น Android 13 (API ระดับ 33) ขึ้นไป ระบบจะดึงข้อมูล
ตัวควบคุมสื่อจาก
การดำเนินการ PlaybackState
รายการ ช่วงเวลานี้
ทำให้ระบบแสดงชุดการควบคุมที่สมบูรณ์ยิ่งขึ้น
ให้สอดคล้องกันระหว่างโทรศัพท์กับอุปกรณ์แท็บเล็ต และสอดคล้องกับลักษณะของสื่อ
การควบคุมจะแสดงผลในแพลตฟอร์ม Android อื่นๆ เช่น Android Auto และ
Android TV
รูปที่ 2 แสดงตัวอย่างว่าข้อมูลจะมีลักษณะอย่างไรบนโทรศัพท์และแท็บเล็ต ตามลำดับ
![การควบคุมสื่อในแง่ของการแสดงผลบนโทรศัพท์และแท็บเล็ต
โดยใช้ตัวอย่างแทร็กตัวอย่างที่แสดงให้เห็นลักษณะของปุ่ม](https://developer.android.google.cn/static/images/about/versions/13/media-controls-phone-tablet.png?authuser=7&hl=th)
รุ่นก่อนหน้า Android 13 ระบบแสดงการดำเนินการสูงสุด 5 รายการจาก MediaStyle
ตามลำดับที่เพิ่ม
ในโหมดกะทัดรัด เช่น ในการตั้งค่าด่วนแบบยุบได้สูงสุด
การดำเนินการ 3 รายการที่ระบุด้วย setShowActionsInCompactView()
แสดงขึ้น
ใน Android 13 ระบบจะแสดงปุ่มการทำงานสูงสุด 5 ปุ่มโดยอิงตาม
ใน PlaybackState
ตามที่อธิบายไว้ในตารางต่อไปนี้ ในโหมดกะทัดรัด มีเพียง 3 รายการแรก
ช่องการดำเนินการจะปรากฏขึ้น สำหรับแอปที่ไม่ได้กำหนดเป้าหมายเป็น Android 13 หรือแอปเหล่านั้น
ที่ไม่มี PlaybackState
ระบบจะแสดงการควบคุมตาม
มีการเพิ่มรายการAction
ลงในการแจ้งเตือนMediaStyle
ตามที่อธิบายไว้ใน
ย่อหน้าก่อนหน้า
สล็อต | การทำงาน | เกณฑ์ |
---|---|---|
1 | เล่น |
สถานะปัจจุบันของ PlaybackState เป็นอย่างใดอย่างหนึ่งต่อไปนี้
|
ไอคอนหมุนแสดงการโหลด |
สถานะปัจจุบันของ PlaybackState เป็นอย่างใดอย่างหนึ่งต่อไปนี้
|
|
หยุดชั่วคราว | สถานะปัจจุบันของ PlaybackState ไม่ตรงกับข้อใดข้างต้น |
|
2 | ก่อนหน้า | PlaybackState การกระทำ ได้แก่ ACTION_SKIP_TO_PREVIOUS |
กำหนดเอง | PlaybackState การกระทำไม่รวม ACTION_SKIP_TO_PREVIOUS และ PlaybackState การกระทำที่กำหนดเองรวมถึงการกระทำที่กำหนดเองที่ยังไม่ได้ถูกวาง |
|
ว่าง | PlaybackState ส่วนเพิ่มเติมมีค่าบูลีน true สำหรับคีย์ SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_PREV |
|
3 | ถัดไป | PlaybackState การกระทำ ได้แก่ ACTION_SKIP_TO_NEXT |
กำหนดเอง | PlaybackState การกระทำไม่รวม ACTION_SKIP_TO_NEXT และ PlaybackState การกระทำที่กำหนดเองรวมถึงการกระทำที่กำหนดเองที่ยังไม่ได้ถูกวาง |
|
ว่าง | PlaybackState ส่วนเพิ่มเติมมีค่าบูลีน true สำหรับคีย์ SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_NEXT |
|
4 | กำหนดเอง | PlaybackState การกระทำที่กำหนดเองจะรวมการกระทำที่กำหนดเองที่ยังไม่ได้วาง |
5 | กำหนดเอง | PlaybackState การกระทำที่กำหนดเองจะรวมการกระทำที่กำหนดเองที่ยังไม่ได้วาง |
การดำเนินการที่กำหนดเองจะวางตามลำดับที่เพิ่มใน
PlaybackState
ใช้ธีมสีของแอปกับเนื้อหา WebView โดยอัตโนมัติแล้ว
สำหรับแอปที่กำหนดเป้าหมายเป็น Android 13 (API ระดับ 33) ขึ้นไป แอตทริบิวต์
setForceDark()
เมธอดเลิกใช้งานแล้ว จะทำให้ไม่มีการดำเนินการหากเรียกใช้เมธอด
ตอนนี้ WebView จะตั้งค่าเสมอ
คำค้นหาสื่อ prefers-color-scheme
ตามแอตทริบิวต์ธีมของแอป
isLightTheme
ในอีก
คำ หาก isLightTheme
คือ true
หรือไม่ได้ระบุ prefers-color-scheme
จะเป็น
light
; มิฉะนั้นจะเป็น 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 หรือ ระบบจะนํารหัสโฆษณาออกโดยอัตโนมัติและแทนที่ด้วยสตริง เป็นศูนย์
หากแอปใช้ SDK ที่ประกาศสิทธิ์ AD_ID
ในไลบรารี
ไฟล์ Manifest แล้วสิทธิ์จะรวมกับไฟล์ Manifest ของแอปโดย
"ค่าเริ่มต้น" ในกรณีนี้ คุณไม่จำเป็นต้องประกาศสิทธิ์ในส่วน
manfiest
หากต้องการทราบข้อมูลเพิ่มเติม โปรดดู การโฆษณา รหัสใน ศูนย์ช่วยเหลือ Play Console
ข้อจำกัดที่ไม่ใช่ SDK ที่อัปเดต
Android 13 มีรายการอัปเดตของอุปกรณ์ที่ไม่ใช่ SDK ที่ถูกจำกัด บนการทำงานร่วมกันกับนักพัฒนาซอฟต์แวร์ Android และ การทดสอบภายใน ทุกครั้งที่เป็นไปได้ เราตรวจสอบให้แน่ใจว่าทางเลือกสาธารณะ พร้อมใช้งานก่อนที่เราจะจำกัดอินเทอร์เฟซที่ไม่ใช่ SDK
หากแอปไม่ได้กำหนดเป้าหมายเป็น Android 13 การเปลี่ยนแปลงบางอย่างเหล่านี้ อาจไม่ส่งผลกระทบต่อคุณโดยทันที อย่างไรก็ตาม แม้ว่าขณะนี้คุณสามารถใช้ อินเทอร์เฟซที่ไม่ใช่ SDK (ขึ้นอยู่กับ API เป้าหมายของแอปคุณ ระดับ) การใช้เมธอดหรือฟิลด์ที่ไม่ใช่ SDK มีความเสี่ยงสูงเสมอที่จะทำให้ แอป
หากไม่แน่ใจว่าแอปใช้อินเทอร์เฟซที่ไม่ใช่ SDK หรือไม่ คุณสามารถทดสอบ แอป เพื่อหาคำตอบ หากแอปใช้อินเทอร์เฟซที่ไม่ใช่ SDK คุณควรเริ่มวางแผน การย้ายข้อมูลไปใช้ทางเลือก SDK อย่างไรก็ตาม เราเข้าใจดีว่าบางแอป กรณีการใช้งานที่ถูกต้องสำหรับการใช้อินเทอร์เฟซที่ไม่ใช่ SDK หากไม่พบทางเลือก ในการใช้อินเทอร์เฟซที่ไม่ใช่ SDK สำหรับฟีเจอร์ในแอป คุณควรส่งคำขอ API สาธารณะใหม่
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงใน Android รุ่นนี้ โปรดดูการอัปเดตเป็น ข้อจำกัดอินเทอร์เฟซที่ไม่ใช่ SDK ใน Android 13 ดูข้อมูลเพิ่มเติมเกี่ยวกับอินเทอร์เฟซที่ไม่ใช่ SDK โดยทั่วไปได้ที่ข้อจำกัดเกี่ยวกับ SDK ที่ไม่ใช่ SDK อินเทอร์เฟซ