כמו בגרסאות קודמות, ב-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, כמו:
- חיפוש מכשירים בקרבת מקום, כמו מדפסות או מכשירי Cast של מדיה, או התחברות אליהם.
תהליך העבודה הזה מאפשר לאפליקציה לבצע משימות מהסוגים הבאים:
- קבלת מידע על נקודות AP מחוץ לתדר, למשל דרך BLE.
- איתור מכשירים והתחברות אליהם באמצעות חיבור Wi-Fi Aware, והתחברות באמצעות נקודה לשיתוף אינטרנט (Hotspot) מקומי בלבד.
- איתור מכשירים והתחברות אליהם באמצעות Wi-Fi ישיר.
- התחלת חיבור ל-SSID ידוע, למשל מכונית או מכשיר לבית חכם.
- מפעילים נקודה לשיתוף אינטרנט (Hotspot) באופן מקומי בלבד.
- טווח למכשירי Wi-Fi Aware בקרבת מקום.
כל עוד האפליקציה לא מסיקה פרטי מיקום פיזי מרשת ה-Wi-Fi
ממשקי API, צריך לבקש NEARBY_WIFI_DEVICES
במקום ACCESS_FINE_LOCATION
לטרגט את Android 13 ואילך ולהשתמש בממשקי API של Wi-Fi. בזמן ההצהרה
ההרשאה NEARBY_WIFI_DEVICES
, הצהרה חזקה על כך שהאפליקציה אף פעם
מסיקה מידע על מיקום פיזי מממשקי API של Wi-Fi. כדי לעשות את זה, מגדירים
android:usesPermissionFlags
אל neverForLocation
. התהליך הזה
כמו ב-Android 12 (רמת API 31) ואילך
להצהיר שמידע על מכשיר Bluetooth אף פעם לא משמש לצורך
המיקום.
בקשת הרשאה לגשת למכשירי Wi-Fi בקרבת מקום.
הרשאות מדיה מפורטות
אם האפליקציה מטרגטת ל-Android 13 ואילך והיא צריכה
לגשת לקובצי מדיה שיש לאפליקציות אחרות
נוצר,
לבקש אחת או יותר מהרשאות המדיה המפורטות הבאות, במקום
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
או השידור של LOCKED_BOOT_COMPLETED
עד
מופעלת מסיבות אחרות.
חוויית משתמש
פקדי מדיה שנגזרים מ-PlaybackState
באפליקציות שמטרגטות ל-Android 13 (רמת API 33) ואילך, המערכת מסיקה
פקדי מדיה מ-
PlaybackState
פעולות. הזה
מאפשרת למערכת להציג קבוצה עשירה יותר של אמצעי בקרה
עקביים בין טלפונים ומכשירי טאבלט, וגם מתאימה לאופן שבו המדיה
הפקדים מוצגים בפלטפורמות אחרות של Android כמו Android Auto
Android TV.
באיור 2 מוצגת דוגמה לאופן שבו זה נראה בטלפון ובטאבלט, בהתאמה.
לפני Android 13, המערכת הציגה עד חמש פעולות מ-MediaStyle
התראה לפי הסדר שבו נוספו.
במצב קומפקטי — לדוגמה, בהגדרות המהירות המכווצות — עד
שלוש פעולות שצוינו באמצעות setShowActionsInCompactView()
הוצגו.
החל מ-Android 13, המערכת מציגה עד חמישה לחצני פעולה שמבוססים על
בPlaybackState
כמו שמתואר בטבלה הבאה. במצב קומפקטי, רק שלוש הראשונות
יוצגו משבצות לפעולות. באפליקציות שלא מטרגטות את 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 Services
נדרשת הרשאה למזהה הפרסום
אפליקציות שמשתמשות בפרסום באמצעות Google Play Services
ID וגם
גרסת היעד של Android 13 (רמת API 33) ומעלה
להצהיר על ההרשאה הרגילה של AD_ID
באפליקציה שלהם
קובץ מניפסט, באופן הבא:
<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
בספרייה
לאחר מכן, ההרשאה ממוזגת עם קובץ המניפסט של האפליקציה
כברירת מחדל. במקרה כזה, אין צורך להצהיר על ההרשאה באפליקציה
בקובץ Manfiest.
אפשר לקרוא מידע נוסף במאמר פרסום ID אינץ' את העזרה של Play Console.
הגבלות מעודכנות שלא קשורות ל-SDK
מערכת Android 13 כוללת רשימות מעודכנות של רכיבי SDK מוגבלים שאינם SDK שמבוססים על שיתוף פעולה עם מפתחי Android, בדיקה פנימית. כשהדבר אפשרי, אנחנו מוודאים שחלופות ציבוריות לפני שנגביל ממשקים שאינם SDK.
אם האפליקציה לא מטרגטת את Android 13, חלק מהשינויים האלה עשויה להשפיע עליך באופן מיידי. אבל למרות שכרגע אפשר להשתמש בחלק ממשקים שאינם SDK (בהתאם ל-API המטורגט של האפליקציה רמה), שימוש בכל שיטה או שדה שאינם SDK תמיד עלול לגרום לקריסה אפליקציה.
אם אתם לא בטוחים אם האפליקציה שלכם משתמשת בממשקים שאינם SDK, אפשר לבדוק את אפליקציה כדי לגלות את התשובה. אם האפליקציה שלך מסתמכת על ממשקים שאינם SDK, יש להתחיל לתכנן העברה לחלופות SDK. עם זאת, אנחנו מבינים שחלק מהאפליקציות תרחישים לדוגמה חוקיים לשימוש בממשקים שאינם SDK. אם לא מוצאים דרך חלופית לשימוש בממשק שאינו SDK עבור תכונה באפליקציה, צריך לבקש API ציבורי חדש.
למידע נוסף על השינויים בגרסה הזו של Android, אפשר לעיין במאמר עדכונים ל- הגבלות על הממשק שאינן SDK ב-Android 13. מידע נוסף על ממשקים שאינם SDK באופן כללי זמין במאמר הגבלות על ממשקים שאינם SDK. ממשקים.