הצהרה על שירותים שפועלים בחזית ובקשה להרשאות

במניפסט של האפליקציה, צריך להצהיר על כל אחד מהשירותים שפועלים בחזית באפליקציה באמצעות רכיב <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 ומעלה.