הצהרה על שירותים שפועלים בחזית ובקשה להרשאות
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
במניפסט של האפליקציה, צריך להצהיר על כל אחד מהשירותים שפועלים בחזית באפליקציה באמצעות רכיב <service>
. לכל שירות, משתמשים במאפיין android:foregroundServiceType
כדי להצהיר על סוג העבודה שהשירות מבצע.
בנוסף, צריך לבקש את כל ההרשאות שנדרשות לשירותים שפועלים בחזית.
תאימות גרסאות
הדרישות להצהרה על שירותי חזית ולבקשת הרשאות משתנות בהתאם לרמת ה-API שהאפליקציה מטרגטת. בדף הזה מפורטות הדרישות לאפליקציות שמטרגטות לרמת API 34 ומעלה. מידע על שינויים בשירותים שפועלים בחזית בגרסאות קודמות של הפלטפורמה זמין במאמר שינויים בשירותים שפועלים בחזית.
הצהרה על שירותים שפועלים בחזית במניפסט של האפליקציה
בדוגמה הבאה מוצג קוד להצהרה על שירות הפעלה של מדיה שפועל בחזית.
יכול להיות שאתם משתמשים בשירות כזה כדי להפעיל מוזיקה.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<application ...>
<service
android:name=".MyMediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
android:exported="false">
</service>
</application>
</manifest>
נקודות עיקריות לגבי הקוד
בדוגמה הזו, לשירות יש רק סוג אחד, media
. אם כמה סוגים רלוונטיים לשירות שלכם, צריך להפריד ביניהם באמצעות האופרטור |
. לדוגמה, אם השירות שלכם משתמש במצלמה ובמיקרופון,
מצהירים על כך כך:
android:foregroundServiceType="camera|microphone"
בהתאם לרמת ה-API שהאפליקציה מטרגטת, יכול להיות שתצטרכו להצהיר על שירותים שפועלים בחזית במניפסט של האפליקציה. הדרישות לרמות ספציפיות של API מתוארות במאמר שינויים בשירותים שפועלים בחזית.
אם מנסים ליצור שירות שפועל בחזית והסוג שלו לא מוצהר במניפסט, המערכת משליכה MissingForegroundServiceTypeException
כשמתבצעת קריאה ל-startForeground()
.
גם אם אין חובה לעשות זאת, מומלץ להצהיר על כל השירותים שפועלים בחזית ולציין את סוגי השירותים שלהם.
בקשת הרשאות לשימוש בשירות שפועל בחזית
בדוגמת הקוד הבאה מוצג איך לבקש הרשאות לשירות שפועל בחזית ומשתמש במצלמה.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA"/>
<application ...>
...
</application>
</manifest>
נקודות עיקריות לגבי הקוד
- הקוד הזה מבוסס על שיטות מומלצות לאפליקציה שמטרגטת לרמת API 34 ומעלה.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-08-27 (שעון UTC).
[null,null,["עדכון אחרון: 2025-08-27 (שעון UTC)."],[],[],null,["In your app's manifest, declare each of your app's foreground services\nwith a [`\u003cservice\u003e`](/guide/topics/manifest/service-element)\nelement. For each service, use an\n[`android:foregroundServiceType` attribute](/develop/background-work/services/fgs/service-types)\nto declare what kind of work the service does.\n\nIn addition, request any permissions needed by your foreground services.\n| **Important:** All foreground service declarations must comply with the requirements in the [Google Play Device and Network Abuse policy](https://support.google.com/googleplay/android-developer/answer/9888379) and the Google Play [Understanding foreground service requirements\n| documentation](https://support.google.com/googleplay/android-developer/answer/13392821).\n\nVersion compatibility\n\nThe requirements for declaring your foreground services and requesting\npermissions vary depending on what API level your app targets. This page\ndescribes the requirements for apps that target API level 34 or higher. For\ninformation about changes to foreground services in earlier platform versions,\nsee [Changes to foreground services](/develop/background-work/services/fgs/changes).\n\nDeclare foreground services in the app manifest\n\nThe following code shows how to declare a media playback foreground service.\nYou might use a service like this to play music. \n\n \u003cmanifest xmlns:android=\"http://schemas.android.com/apk/res/android\" ...\u003e\n \u003capplication ...\u003e\n\n \u003cservice\n android:name=\".MyMediaPlaybackService\"\n android:foregroundServiceType=\"mediaPlayback\"\n android:exported=\"false\"\u003e\n \u003c/service\u003e\n \u003c/application\u003e\n \u003c/manifest\u003e\n\nKey points about the code\n\n- In this example, the service has only one type, `media`. If\n multiple types apply to your service, separate them with the `|`\n operator. For example, if your service uses the camera and microphone,\n declare it like this:\n\n android:foregroundServiceType=\"camera|microphone\"\n\n- Depending on what API level your app targets, you may be\n **required** to declare foreground services in the app\n manifest. The requirements for specific API levels are described in\n [Changes to foreground services](/develop/background-work/services/fgs/changes).\n\n If you try to create a foreground service and its type isn't declared\n in the manifest, the system throws a\n [`MissingForegroundServiceTypeException`](/reference/android/app/MissingForegroundServiceTypeException)\n upon calling `startForeground()`.\n\n Even when it isn't required, it's a best practice to declare\n all your foreground services and provide their service types.\n\nRequest the foreground service permissions\n\nThe following code shows how to request permissions for a foreground\nservice that uses the camera. \n\n \u003cmanifest xmlns:android=\"http://schemas.android.com/apk/res/android\" ...\u003e\n\n \u003cuses-permission android:name=\"android.permission.FOREGROUND_SERVICE\"/\u003e\n \u003cuses-permission android:name=\"android.permission.FOREGROUND_SERVICE_CAMERA\"/\u003e\n\n \u003capplication ...\u003e\n ...\n \u003c/application\u003e\n \u003c/manifest\u003e\n\nKey points about the code\n\n- This code uses best practices for an app that targets API level 34 or higher."]]