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

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