כדי לעזור למפתחים להגדיר בצורה מכוונת יותר שירותים שפועלים בחזית שגלויים למשתמשים, ב-Android 10 הוספנו את המאפיין android:foregroundServiceType
לרכיב <service>
.
אם האפליקציה מטרגטת את Android 14, צריך לציין בה את הסוגים המתאימים של השירות שפועל בחזית. כמו בגרסאות קודמות של Android, אפשר לשלב כמה סוגים. ברשימה הזו מופיעים הסוגים של השירותים שפועלים בחזית שאפשר לבחור מביניהם:
camera
connectedDevice
dataSync
health
location
mediaPlayback
mediaProjection
microphone
phoneCall
remoteMessaging
shortService
specialUse
systemExempted
אם תרחיש לדוגמה באפליקציה שלכם לא משויך לאף אחד מהסוגים האלה, מומלץ מאוד להעביר את הלוגיקה שלכם כך שתשתמש ב-WorkManager או במשימות להעברת נתונים שמבוצעות ביוזמת המשתמש.
הסוגים health, remoteMessaging, shortService, specialUse
ו-systemExempted
הם חדשים ב-Android 14.
קטע הקוד הבא הוא דוגמה להצהרה על סוג שירות שפועל בחזית במניפסט:
<manifest ...>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<application ...>
<service
android:name=".MyMediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
android:exported="false">
</service>
</application>
</manifest>
אם אפליקציה שמטרגטת את Android 14 לא מגדירה סוגי שירות מסוימים במניפסט, המערכת תרים את השגיאה MissingForegroundServiceTypeException
בקריאה ל-startForeground()
לשירות הזה.
声明新权限来使用前台服务类型
אם אפליקציות שמטרגטות את Android 14 נעזרות בשירות שפועל בחזית, הן צריכות להצהיר על הרשאה ספציפית, בהתאם לסוג השירות שפועל בחזית, שהוצגה ב-Android 14. ההרשאות האלה מופיעות בקטעים שמסומנים בתווית 'הרשאה שצריך להצהיר עליה בקובץ המניפסט' בקטע תרחישים לדוגמה ותהליך האכיפה לכל סוג של שירות שפועל בחזית בדף הזה.
כל ההרשאות מוגדרות כהרשאות רגילות ומוקצות כברירת מחדל. המשתמשים לא יכולים לבטל את ההרשאות האלה.
在运行时包含前台服务类型
השיטה המומלצת לאפליקציות שמפעילות שירותים שפועלים בחזית היא להשתמש בגרסה ServiceCompat
של startForeground()
(זמינה ב-androidx-core 1.12 ואילך), שבה מעבירים מספר שלם בינארי של סוגי השירותים שפועלים בחזית. אפשר לבחור להעביר ערך טיפוס אחד או יותר.
בדרך כלל, צריך להצהיר רק על הסוגים הנדרשים לתרחיש לדוגמה מסוים. כך קל יותר לעמוד בציפיות של המערכת לגבי כל סוג של שירות שפועל בחזית. במקרים שבהם שירות שפועל בחזית מופעל עם כמה סוגים, השירות שפועל בחזית צריך לעמוד בדרישות האכיפה של הפלטפורמה של כל הסוגים.
ServiceCompat.startForeground(0, notification, FOREGROUND_SERVICE_TYPE_LOCATION)
אם לא מציינים את סוג השירות שפועל בחזית בקריאה, הערך שמוגדר כברירת מחדל הוא הערכים שמוגדרים במניפסט. אם לא ציינתם את סוג השירות במניפסט, המערכת תשליך את השגיאה MissingForegroundServiceTypeException
.
אם לשירות שפועל בחזית נדרשות הרשאות חדשות אחרי ההפעלה שלו, צריך להפעיל שוב את startForeground()
ולהוסיף את סוגי השירות החדשים. לדוגמה, נניח שאפליקציית כושר מפעילה שירות למעקב אחר ריצה שתמיד צריך להשתמש בו במידע location
, אבל יכול להיות שהוא לא יצטרך הרשאות media
. חשוב להצהיר גם על location
וגם על mediaPlayback
במניפסט. אם משתמש מתחיל ריצה ורוצה לעקוב רק אחרי המיקום שלו, האפליקציה צריכה לקרוא ל-startForeground()
ולהעביר רק את סוג השירות location
. לאחר מכן, אם המשתמש רוצה להפעיל את האודיו, קוראים שוב startForeground()
ומעבירים את location|mediaPlayback
.
系统运行时检查
המערכת בודקת אם נעשה שימוש תקין בסוגי שירותים שפועלים בחזית, ומאשרת שהאפליקציה ביקשה את הרשאות זמן הריצה המתאימות או משתמשת בממשקי ה-API הנדרשים.
לדוגמה, המערכת מצפה שאפליקציות שמשתמשות בשירות שפועל בחזית מסוג FOREGROUND_SERVICE_TYPE_LOCATION
יבקשו את ההרשאה ACCESS_COARSE_LOCATION
או ACCESS_FINE_LOCATION
.
המשמעות היא שאפליקציות צריכות לפעול לפי סדר פעולות ספציפי מאוד כשהן מבקשות הרשאות מהמשתמשים ומפעילות שירותים שפועלים בחזית. צריך לבקש את ההרשאות ולהעניק אותן לפני שהאפליקציה תנסה לבצע קריאה ל-startForeground()
. אפליקציות שמבקשות את ההרשאות המתאימות אחרי שהשירות שפועל בחזית הופעל צריכות לשנות את סדר הפעולות ולבקש את ההרשאה לפני הפעלת השירות שפועל בחזית.
הפרטים של אכיפת הפלטפורמה מופיעים בקטעים שמסומנים בתווית 'דרישות בסביבת זמן הריצה' בקטע תרחישים לדוגמה ותהליך האכיפה של כל סוג של שירות שפועל בחזית בדף הזה.
每种前台服务类型的预期用例和强制执行
כדי להשתמש בסוג מסוים של שירות שפועל בחזית, צריך להצהיר על הרשאה מסוימת בקובץ המניפסט, לעמוד בדרישות ספציפיות בסביבת זמן הריצה, והאפליקציה צריכה לעמוד באחד מהתרחישי לדוגמה שמיועדים לסוג הזה. בקטעים הבאים מוסבר מהי ההרשאה שצריך להצהיר עליה, מהן הדרישות המוקדמות בסביבת זמן הריצה ומה הם תרחישים לדוגמה שבהם נעשה שימוש בכל סוג.
相机
- סוג השירות שפועל בחזית שצריך להצהיר עליו במניפסט בקטע
android:foregroundServiceType
camera
- הרשאה להצהרה במניפסט
FOREGROUND_SERVICE_CAMERA
- קבוע להעברה אל
startForeground()
FOREGROUND_SERVICE_TYPE_CAMERA
- דרישות מוקדמות בסביבת זמן הריצה
מבקשים את הרשאת זמן הריצה
CAMERA
ומקבלים אותההערה: ההרשאה בסביבת זמן הריצה
CAMERA
כפופה להגבלות במהלך השימוש. לכן, לא ניתן ליצור שירותcamera
שפועל בחזית בזמן שהאפליקציה פועלת ברקע, למעט כמה יוצאים מן הכלל. מידע נוסף זמין במאמר הגבלות על הפעלת שירותים שפועלים בחזית שצריכים הרשאות לשימוש.- תיאור
להמשיך לגשת למצלמה מהרקע, למשל באפליקציות של וידאו צ'אט שמאפשרות לבצע כמה משימות בו-זמנית.
连接的设备
- סוג השירות שפועל בחזית שצריך להצהיר עליו במניפסט בקטע
android:foregroundServiceType
connectedDevice
- הרשאה להצהרה במניפסט
FOREGROUND_SERVICE_CONNECTED_DEVICE
- קבוע להעברה אל
startForeground()
FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE
- דרישות מוקדמות בסביבת זמן הריצה
לפחות אחד מהתנאים הבאים חייב להתקיים:
צריך להצהיר על לפחות אחת מההרשאות הבאות במניפסט:
צריך לבקש לפחות אחת מההרשאות הבאות בסביבת זמן הריצה, ולקבל אותה:
התקשרו למספר
UsbManager.requestPermission()
- תיאור
אינטראקציות עם מכשירים חיצוניים שדורשים חיבור Bluetooth, NFC, IR, USB או חיבור לרשת.
- אפשרויות אחרות
אם באפליקציה שלכם יש צורך לבצע העברה רציפה של נתונים למכשיר חיצוני, כדאי להשתמש במקום זאת במנהל המכשיר הנלווה. אתם יכולים להשתמש ב-companion device presence API כדי לעזור לאפליקציה להמשיך לפעול בזמן שהמכשיר הנלווה נמצא בטווח.
אם האפליקציה שלכם צריכה לסרוק מכשירי Bluetooth, כדאי להשתמש ב-Bluetooth scan API במקום זאת.
数据同步
- סוג השירות שפועל בחזית שצריך להצהיר עליו במניפסט בקטע
android:foregroundServiceType
dataSync
- הרשאה להצהרה במניפסט
FOREGROUND_SERVICE_DATA_SYNC
- קבוע להעברה אל
startForeground()
FOREGROUND_SERVICE_TYPE_DATA_SYNC
- דרישות מוקדמות בסביבת זמן הריצה
- ללא
- תיאור
פעולות העברת נתונים, כמו:
- העלאה או הורדה של נתונים
- פעולות גיבוי ושחזור
- פעולות ייבוא או ייצוא
- אחזור נתונים
- עיבוד קבצים מקומי
- העברת נתונים בין מכשיר לענן דרך רשת
- אפשרויות אחרות
מידע מפורט זמין במאמר חלופות לשירותי חזית לסנכרון נתונים.
健康
- סוג השירות שפועל בחזית שצריך להצהיר עליו במניפסט בקטע
android:foregroundServiceType
health
- הרשאה להצהרה במניפסט
FOREGROUND_SERVICE_HEALTH
- קבוע להעברה אל
startForeground()
FOREGROUND_SERVICE_TYPE_HEALTH
- דרישות מוקדמות בסביבת זמן הריצה
לפחות אחד מהתנאים הבאים חייב להתקיים:
מצהירים על ההרשאה
HIGH_SAMPLING_RATE_SENSORS
במניפסט.לבקש לקבל לפחות אחת מההרשאות הבאות בסביבת זמן הריצה:
הערה: ההרשאה בסביבת זמן הריצה
BODY_SENSORS
כפופה להגבלות במהלך השימוש. לכן אי אפשר ליצור שירותhealth
שפועל בחזית ומשתמש בחיישנים גופניים בזמן שהאפליקציה נמצאת ברקע, למעט כמה יוצאים מן הכלל. מידע נוסף זמין במאמר הגבלות על הפעלת שירותים שפועלים בחזית שצריכים הרשאות לשימוש.- תיאור
תרחישים לדוגמה לטווח ארוך לתמיכה באפליקציות בקטגוריית הכושר, כמו מכשירי מעקב אחר אימונים.
位置
- סוג השירות שפועל בחזית שצריך להצהיר עליו במניפסט בקטע
android:foregroundServiceType
location
- הרשאה להצהרה במניפסט
FOREGROUND_SERVICE_LOCATION
- קבוע להעברה אל
startForeground()
FOREGROUND_SERVICE_TYPE_LOCATION
- דרישות מוקדמות בסביבת זמן הריצה
המשתמש צריך להפעיל את שירותי המיקום, והאפליקציה צריכה לקבל לפחות אחת מההרשאות הבאות בסביבת זמן הריצה:
הערה: כדי לבדוק שהמשתמש הפעיל את שירותי המיקום וגם העניק גישה להרשאות בסביבת זמן הריצה, משתמשים ב-
PermissionChecker#checkSelfPermission()
הערה: ההרשאות של מיקום זמן ריצה כפופות להגבלות בזמן השימוש. לכן, אי אפשר ליצור שירות
location
בחזית בזמן שהאפליקציה נמצאת ברקע, אלא אם קיבלתם את ההרשאהACCESS_BACKGROUND_LOCATION
בסביבת זמן הריצה. מידע נוסף זמין במאמר הגבלות על הפעלת שירותים שפועלים בחזית שצריכים הרשאות לשימוש.- תיאור
תרחישים לדוגמה לטווח ארוך שדורשים גישה למיקום, כמו ניווט ושיתוף מיקום.
- אפשרויות אחרות
אם אתם רוצים שהאפליקציה תופעל כשהמשתמש מגיע למיקומים ספציפיים, מומלץ להשתמש ב-Geofence API במקום ב-Location API.
媒体
- סוג השירות שפועל בחזית שצריך להצהיר עליו במניפסט בקטע
android:foregroundServiceType
mediaPlayback
- הרשאה להצהרה במניפסט
FOREGROUND_SERVICE_MEDIA_PLAYBACK
- קבוע להעברה אל
startForeground()
FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK
- דרישות מוקדמות בסביבת זמן הריצה
- ללא
- תיאור
- המשך ההפעלה של האודיו או הווידאו מהרקע. תמיכה בפונקציונליות של הקלטת וידאו דיגיטלית (DVR) ב-Android TV.
- אפשרויות אחרות
- אם אתם מציגים סרטון ב'תמונה בתוך תמונה', תוכלו להשתמש במצב 'תמונה בתוך תמונה'.
媒体投影
- סוג השירות שפועל בחזית שצריך להצהיר עליו במניפסט בקטע
android:foregroundServiceType
mediaProjection
- הרשאה להצהרה במניפסט
FOREGROUND_SERVICE_MEDIA_PROJECTION
- קבוע להעברה אל
startForeground()
FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
- דרישות מוקדמות בסביבת זמן הריצה
צריך לקרוא ל-method
createScreenCaptureIntent()
לפני שמפעילים את השירות שפועל בחזית. הפעולה הזו תציג למשתמש התראה על הרשאה, והמשתמש יצטרך להעניק את ההרשאה כדי שתוכלו ליצור את השירות.אחרי שיוצרים את שירות החזית, אפשר להפעיל את השיטה
MediaProjectionManager.getMediaProjection()
.- תיאור
הקרנת תוכן למסך לא ראשי או למכשיר חיצוני באמצעות ממשקי ה-API של
MediaProjection
. התוכן הזה לא חייב להיות תוכן מדיה בלבד.- אפשרויות אחרות
כדי להעביר מדיה בסטרימינג למכשיר אחר, משתמשים ב-Google Cast SDK.
麦克风
- סוג השירות שפועל בחזית שצריך להצהיר עליו במניפסט בקטע
android:foregroundServiceType
microphone
- הרשאה להצהרה במניפסט
FOREGROUND_SERVICE_MICROPHONE
- קבוע להעברה אל
startForeground()
FOREGROUND_SERVICE_TYPE_MICROPHONE
- דרישות מוקדמות בסביבת זמן הריצה
מבקשים את ההרשאה
RECORD_AUDIO
בזמן הריצה ומקבלים אותה.הערה: ההרשאה
RECORD_AUDIO
בסביבת זמן הריצה כפופה להגבלות במהלך השימוש. לכן, אי אפשר ליצור שירותmicrophone
שפועל בחזית בזמן שהאפליקציה פועלת ברקע, למעט כמה יוצאים מן הכלל. מידע נוסף זמין במאמר הגבלות על הפעלת שירותים שפועלים בחזית שצריכים הרשאות לשימוש.- תיאור
המשך הקלטה מהמיקרופון ברקע, כמו מכשירי הקלטה קולית או אפליקציות תקשורת.
致电
- סוג השירות שפועל בחזית שצריך להצהיר עליו במניפסט בקטע
android:foregroundServiceType
phoneCall
- הרשאה להצהרה במניפסט
FOREGROUND_SERVICE_PHONE_CALL
- קבוע להעברה אל
startForeground()
FOREGROUND_SERVICE_TYPE_PHONE_CALL
- דרישות מוקדמות בסביבת זמן הריצה
לפחות אחד מהתנאים הבאים חייב להתקיים:
- האפליקציה הצהירה על ההרשאה
MANAGE_OWN_CALLS
בקובץ המניפסט שלה.
- האפליקציה הצהירה על ההרשאה
- האפליקציה היא אפליקציית החיוג שמוגדרת כברירת מחדל דרך התפקיד
ROLE_DIALER
.
- האפליקציה היא אפליקציית החיוג שמוגדרת כברירת מחדל דרך התפקיד
- תיאור
המשך שיחה פעילה באמצעות ממשקי ה-API של
ConnectionService
.- אפשרויות אחרות
אם אתם צריכים להתקשר בטלפון, בשיחות וידאו או ב-VoIP, כדאי להשתמש בספרייה
android.telecom
.כדאי להשתמש ב-
CallScreeningService
כדי לסנן שיחות.
远程消息传递
- סוג השירות שפועל בחזית שצריך להצהיר עליו במניפסט בקטע
android:foregroundServiceType
remoteMessaging
- הרשאה להצהרה במניפסט
FOREGROUND_SERVICE_REMOTE_MESSAGING
- קבוע להעברה אל
startForeground()
FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING
- דרישות מוקדמות בסביבת זמן הריצה
- ללא
- תיאור
- העברת הודעות טקסט ממכשיר אחד למכשיר אחר. מאפשרת למשתמשים להמשיך את משימות ההודעות שלהם כשהם עוברים בין מכשירים.
短期服务
- סוג השירות שפועל בחזית שצריך להצהיר עליו במניפסט בקטע
android:foregroundServiceType
shortService
- הרשאה להצהרה במניפסט
- ללא
- קבוע להעברה אל
startForeground()
FOREGROUND_SERVICE_TYPE_SHORT_SERVICE
- דרישות מוקדמות בסביבת זמן הריצה
- ללא
- תיאור
לסיים במהירות עבודה קריטית שלא ניתן להפריע לה או לדחות אותה.
לסוג הזה יש כמה מאפיינים ייחודיים:
- אפשר להריץ אותו רק לפרק זמן קצר (כ-3 דקות).
- אין תמיכה בשירותי חזית דביקים.
- אי אפשר להפעיל שירותים אחרים שפועלים בחזית.
- לא נדרשת הרשאה ספציפית לסוג, אבל עדיין נדרשת ההרשאה
FOREGROUND_SERVICE
. - אפשר לשנות את
shortService
לסוג שירות אחר רק אם האפליקציה עומדת כרגע בדרישות להפעלת שירות חדש בחזית. - שירות שפועל בחזית יכול לשנות את הסוג שלו ל-
shortService
בכל שלב, ובאותו רגע מתחילה תקופת הזמן הקצובה.
הזמן הקצוב לתפוגה של shortService מתחיל מהרגע שבו מתבצעת הקריאה ל-
Service.startForeground()
. האפליקציה אמורה לבצע קריאה ל-Service.stopSelf()
או ל-Service.stopForeground()
לפני שהזמן יפוג. אחרת,Service.onTimeout()
החדש ייוצר, ויינתן לאפליקציות הזדמנות קצרה להתקשר ל-stopSelf()
או ל-stopForeground()
כדי להפסיק את השירות שלהן.זמן קצר אחרי הקריאה ל-
Service.onTimeout()
, האפליקציה נכנסת למצב שמאוחסן במטמון והיא כבר לא נחשבת לפעילה בחזית, אלא אם המשתמש מבצע אינטראקציה פעילה עם האפליקציה. זמן קצר אחרי שהאפליקציה מאוחסנת במטמון והשירות לא הופסק, האפליקציה מקבלת אירוע ANR. בהודעת ה-ANR מוזכרFOREGROUND_SERVICE_TYPE_SHORT_SERVICE
. לכן, מומלץ להטמיע את פונקציית ה-callbackService.onTimeout()
.קריאת החזרה (call back)
Service.onTimeout()
לא קיימת ב-Android מגרסה 13 ומטה. אם אותו שירות פועל במכשירים כאלה, הוא לא מקבל זמן קצוב לתפוגה ולא מתרחשת בו בעיה מסוג ANR. חשוב לוודא שהשירות יפסיק לפעול ברגע שהוא יסיים את משימת העיבוד, גם אם הוא עדיין לא קיבל את הקריאה החוזרת (callback) שלService.onTimeout()
.חשוב לציין שאם לא יתקיים הזמן הקצוב לתפוגה של
shortService
, תופיע באפליקציה שגיאת ANR גם אם פועלות בה שירותים חוקיים אחרים בחזית או תהליכים אחרים במחזור החיים של האפליקציה.אם אפליקציה גלויה למשתמש או עומדת באחד מההחרגות שמאפשרות להפעיל שירותים שפועלים בחזית מהרקע, קריאה חוזרת ל-
Service.StartForeground()
עם הפרמטרFOREGROUND_SERVICE_TYPE_SHORT_SERVICE
מאריכה את הזמן הקצוב לתפוגה ב-3 דקות נוספות. אם האפליקציה לא גלויה למשתמש ולא עומדת באחד מההחרגות, כל ניסיון להפעיל שירות נוסף שפועל בחזית, ללא קשר לסוג שלו, יגרום לForegroundServiceStartNotAllowedException
.אם משתמש משבית את אופטימיזציית הסוללה באפליקציה, היא עדיין מושפעת מזמן הקצאת הזמן הקצוב לתפוגה של shortService FGS.
אם מפעילים שירות שפועל בחזית שכולל את הסוג
shortService
וגם סוג אחר של שירות שפועל בחזית, המערכת מתעלמת מהצהרת הסוגshortService
. עם זאת, השירות עדיין צריך לעמוד בדרישות המוקדמות של הסוגים האחרים שצוינו. מידע נוסף זמין במסמכי העזרה של שירותי חזית.
特殊用途
- סוג השירות שפועל בחזית שצריך להצהיר עליו במניפסט בקטע
android:foregroundServiceType
specialUse
- הרשאה להצהרה במניפסט
FOREGROUND_SERVICE_SPECIAL_USE
- קבוע להעברה אל
startForeground()
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
- דרישות מוקדמות לסביבת זמן ריצה
- ללא
- תיאור
רלוונטי לתרחישים לדוגמה תקינים של שירות שפועל בחזית, שלא נכללים בפלטפורמה האחרת סוגי השירותים שפועלים בחזית.
בנוסף להצהרה על
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
בסוג השירות שפועל בחזית, מפתחים צריכים להצהיר על תרחישים לדוגמה . כדי לעשות זאת, הן מציינות את הרכיב<property>
שבתוך רכיב<service>
. הערכים האלה ותרחישי השימוש המתאימים נבדקים כששולחים את האפליקציה ל-Google Play Console. תרחישי השימוש שאתם מספקים יכולים להיות בכל צורה, וצריך לוודא שאתם מספקים מספיק מידע כדי לאפשר למבקר להבין למה אתם צריכים להשתמש בסוגspecialUse
.<service android:name="fooService" android:foregroundServiceType="specialUse"> <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE" android:value="explanation_for_special_use"/> </service>
系统豁免
- סוג השירות שפועל בחזית שצריך להצהיר עליו במניפסט בקטע
android:foregroundServiceType
systemExempted
- הרשאה להצהרה במניפסט
FOREGROUND_SERVICE_SYSTEM_EXEMPTED
- קבוע להעברה אל
startForeground()
FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED
- דרישות מוקדמות בסביבת זמן הריצה
- ללא
- תיאור
הרשאה ששמורה לאפליקציות מערכת ולשילובים ספציפיים של מערכת, כדי להמשיך להשתמש בשירותים שפועלים בחזית.
כדי להשתמש בסוג הזה, האפליקציה צריכה לעמוד באחד לפחות מהקריטריונים הבאים:
- המכשיר נמצא במצב הדגמה
- האפליקציה היא בעלים של מכשיר
- האפליקציה היא בעלים של פרופיל
- אפליקציות בטיחות עם התפקיד
ROLE_EMERGENCY
- אפליקציות של ניהול מכשירים
- אפליקציות עם ההרשאה
SCHEDULE_EXACT_ALARM
אוUSE_EXACT_ALARM
שמשתמשות בשירות שפועל בחזית כדי להמשיך להפעיל התראות ברקע, כולל התראות עם משוב מישוש בלבד. אפליקציות VPN (שמוגדרות באמצעות הגדרות > רשת ואינטרנט > VPN)
אחרת, ההצהרה על הסוג הזה תגרום למערכת להפעיל
ForegroundServiceTypeNotAllowedException
.
使用前台服务类型时强制执行的 Google Play 政策
אם האפליקציה שלכם מטרגטת את Android מגרסה 14 ואילך, תצטרכו להצהיר על סוגי השירותים של האפליקציה בחזית בדף 'תוכן האפליקציה' ב-Play Console (Policy (מדיניות) > App content (תוכן האפליקציה)). מידע נוסף על הצהרת סוגי השירותים שפועלים בחזית ב-Play Console זמין במאמר הסבר על שירותים שפועלים בחזית ועל הדרישות לגבי כוונות במסך מלא.