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

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