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

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