קיצורי דרך עוזרים למשתמשים לגשת במהירות לחלקים באפליקציה, וכך מספקים להם סוגים ספציפיים של תוכן.
האופן שבו מעבירים תוכן באמצעות קיצורי דרך תלוי בתרחיש לדוגמה ובשאלה אם ההקשר של קיצור הדרך מבוסס על האפליקציה או על המשתמש. ההקשר של קיצור דרך סטטי לא משתנה, וההקשר של קיצור דרך דינמי משתנה כל הזמן, אבל האפליקציה קובעת את ההקשר בשני המקרים. במקרים שבהם משתמש בוחר איך האפליקציה שלכם תציג לו תוכן, למשל באמצעות קיצור דרך מוצמד, ההקשר מוגדר על ידי המשתמש. בתרחישים הבאים מתוארים כמה תרחישי שימוש לכל סוג של קיצור דרך:
- קיצורי דרך סטטיים מתאימים במיוחד לאפליקציות שמקשרות לתוכן באמצעות מבנה עקבי לאורך כל האינטראקציה של המשתמש עם האפליקציה. מכיוון שרוב מרכזי האפליקציות מציגים רק ארבעה קיצורי דרך בכל פעם, קיצורי דרך סטטיים שימושיים לביצוע משימה שגרתית באופן עקבי, למשל אם המשתמש רוצה לראות את היומן או את האימייל שלו בצורה מסוימת.
- קיצורי דרך דינמיים משמשים לפעולות באפליקציות שרגישות להקשר. קיצורי דרך תלויי-הקשר מותאמים לפעולות שהמשתמשים מבצעים באפליקציה. לדוגמה, אם אתם יוצרים משחק שמאפשר למשתמש להתחיל מהרמה הנוכחית שלו כשהוא מפעיל את המשחק, אתם צריכים לעדכן את קיצור הדרך לעיתים קרובות. שימוש בקיצור דרך דינמי מאפשר לכם לעדכן את קיצור הדרך בכל פעם שהמשתמש מסיים שלב.
- קיצורי דרך מוצמדים משמשים לפעולות ספציפיות שהמשתמשים מבצעים. לדוגמה, משתמש יכול להצמיד אתר ספציפי למפעיל האפליקציות. היתרון בכך הוא שהמשתמש יכול לבצע פעולה מותאמת אישית – כמו ניווט לאתר בשלב אחד, מהר יותר מאשר באמצעות מופע ברירת מחדל של דפדפן.
יצירת קיצורי דרך סטטיים
קיצורי דרך סטטיים מספקים קישורים לפעולות כלליות באפליקציה, והפעולות האלה צריכות להישאר עקביות לאורך חיי הגרסה הנוכחית של האפליקציה. אפשרויות טובות לקיצורי דרך סטטיים כוללות צפייה בהודעות שנשלחו, הגדרת שעון מעורר והצגת פעילות גופנית של משתמש ביום מסוים.
כדי ליצור קיצור דרך סטטי:
- בקובץ
AndroidManifest.xmlשל האפליקציה, מחפשים את הפעילות שבה מסנני הכוונות מוגדרים לפעולהandroid.intent.action.MAINולקטגוריהandroid.intent.category.LAUNCHER. מוסיפים לרכיב הזה של הפעילות את הרכיב
<meta-data>שמפנה לקובץ המשאבים שבו מוגדרים קיצורי הדרך של האפליקציה:<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication"> <application ... > <activity android:name="Main"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" /> </activity> </application> </manifest>יוצרים קובץ משאבים חדש בשם
res/xml/shortcuts.xml.בקובץ המשאבים החדש, מוסיפים רכיב בסיס
<shortcuts>שמכיל רשימה של רכיבי<shortcut>. בכל רכיב<shortcut>, צריך לכלול מידע על קיצור דרך סטטי, כולל הסמל, תוויות התיאור והכוונה שהוא מפעיל באפליקציה:<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <shortcut android:shortcutId="compose" android:enabled="true" android:icon="@drawable/compose_icon" android:shortcutShortLabel="@string/compose_shortcut_short_label1" android:shortcutLongLabel="@string/compose_shortcut_long_label1" android:shortcutDisabledMessage="@string/compose_disabled_message1"> <intent android:action="android.intent.action.VIEW" android:targetPackage="com.example.myapplication" android:targetClass="com.example.myapplication.Main" /> <!-- If your shortcut is associated with multiple intents, include them here. The last intent in the list determines what the user sees when they launch this shortcut. --> <categories android:name="android.shortcut.conversation" /> <capability-binding android:key="actions.intent.CREATE_MESSAGE" /> </shortcut> <!-- Specify more shortcuts here. --> </shortcuts>
התאמה אישית של ערכי מאפיינים
ברשימה הבאה מפורטים המאפיינים השונים של קיצור דרך סטטי. צריך לספק ערך למאפיינים android:shortcutId ו-android:shortcutShortLabel. כל שאר הערכים הם אופציונליים.
android:shortcutIdמחרוזת מילולית שמייצגת את קיצור הדרך כשמופעלות פעולות על אובייקט
ShortcutManager.android:shortcutShortLabelביטוי תמציתי שמתאר את מטרת קיצור הדרך. אם אפשר, כדאי להגביל את התיאור הקצר הזה ל-10 תווים.
מידע נוסף זמין במאמר
setShortLabel().android:shortcutLongLabelביטוי מורחב שמתאר את מטרת קיצור הדרך. אם יש מספיק מקום, המשגר מציג את הערך הזה במקום
android:shortcutShortLabel. אם אפשר, כדאי להגביל את התיאור הארוך הזה ל-25 תווים.מידע נוסף זמין במאמר
setLongLabel().android:shortcutDisabledMessageההודעה שמופיעה ב-Launcher נתמך כשהמשתמש מנסה להפעיל קיצור דרך מושבת. בהודעה צריך להסביר למשתמש למה קיצור הדרך מושבת. לערך של המאפיין הזה אין השפעה אם
android:enabledהואtrue.android:enabledקובעת אם המשתמש יכול לבצע אינטראקציה עם קיצור הדרך ממפעיל נתמך. ערך ברירת המחדל של
android:enabledהואtrue. אם מגדירים את האפשרותfalse, צריך להגדירandroid:shortcutDisabledMessageשמסביר למה משביתים את קיצור הדרך. אם לדעתכם לא צריך לספק הודעה כזו, צריך להסיר את קיצור הדרך מקובץ ה-XML.android:iconמפת הסיביות (bitmap) או הסמל הניתן להתאמה שמרכז האפליקציות משתמש בהם כשהוא מציג את קיצור הדרך למשתמש. הערך יכול להיות הנתיב לתמונה או לקובץ המשאבים שמכיל את התמונה. כדי לשפר את הביצועים והעקביות, מומלץ להשתמש בסמלים דינמיים כשאפשר.
הגדרת אלמנטים פנימיים
קובץ ה-XML שמפרט את קיצורי הדרך הסטטיים של האפליקציה תומך ברכיבים הבאים בתוך כל רכיב <shortcut>. חובה לכלול רכיב פנימי intent לכל קיצור דרך סטטי שמגדירים.
intentהפעולה שהמערכת מפעילה כשהמשתמש בוחר את קיצור הדרך. בכוונת הקנייה הזו צריך לספק ערך למאפיין
android:action.אפשר לספק כמה כוונות לקיצור דרך אחד. פרטים נוספים זמינים במאמרים בנושא ניהול של כמה כוונות ופעילויות, הגדרת כוונה ו
TaskStackBuilder.categoriesמספק קיבוץ של סוגי הפעולות שהקיצורים של האפליקציה מבצעים, כמו יצירת הודעות חדשות בצ'אט.
רשימת הקטגוריות הנתמכות של מקשי הקיצור מופיעה בחומר העזר בנושא המחלקה
ShortcutInfo.capability-bindingהצהרה על היכולת שמקושרת לקיצור הדרך.
בדוגמה הקודמת, קיצור הדרך מקושר ליכולת שהוגדרה עבור
CREATE_MESSAGE, שהיא כוונה מובנית של פעולות באפליקציה. הקישור הזה של יכולות מאפשר למשתמשים להשתמש בפקודות קוליות עם Google Assistant כדי להפעיל קיצור דרך.
יצירת קיצורי דרך דינמיים
קיצורי דרך דינמיים מספקים קישורים לפעולות ספציפיות שרלוונטיות להקשר בתוך האפליקציה. הפעולות האלה יכולות להשתנות בין השימושים באפליקציה ובזמן שהאפליקציה פועלת. שימושים טובים בקיצורי דרך דינמיים כוללים התקשרות לאדם ספציפי, ניווט למיקום ספציפי וטעינת משחק מנקודת השמירה האחרונה של המשתמש. אפשר גם להשתמש בקיצורי דרך דינמיים כדי לפתוח שיחה.
ספריית Jetpack ShortcutManagerCompat היא כלי עזר ל-API ShortcutManager, שמאפשר לכם לנהל קיצורי דרך דינמיים באפליקציה. השימוש בספריית ShortcutManagerCompat מצמצם את כמות הקוד שחוזר על עצמו (boilerplate) ועוזר לוודא שקיצורי הדרך פועלים באופן עקבי בגרסאות שונות של Android. הספרייה הזו נדרשת גם כדי לשלוח קיצורי דרך דינמיים, כך שהם יעמדו בדרישות להצגה בפלטפורמות של Google – כמו Assistant – באמצעות ספריית השילוב של קיצורי הדרך של Google.
ShortcutManagerCompat API מאפשר לאפליקציה לבצע את הפעולות הבאות באמצעות קיצורי דרך דינמיים:
- דחיפה ועדכון: משתמשים ב-
pushDynamicShortcut()כדי לפרסם ולעדכן את קיצורי הדרך הדינמיים. אם כבר יש קיצורי דרך דינמיים או מוצמדים עם אותו מזהה, כל קיצור דרך שניתן לשינוי מתעדכן. - הסרה: הסרת קבוצה של קיצורי דרך דינמיים באמצעות
removeDynamicShortcuts(). מסירים את כל קיצורי הדרך הדינמיים באמצעותremoveAllDynamicShortcuts().
מידע נוסף על ביצוע פעולות בקיצורי דרך זמין במאמרים ניהול קיצורי דרך והפניה ל-ShortcutManagerCompat.
דוגמה ליצירת קיצור דרך דינמי ושיוכו לאפליקציה:
val shortcut = ShortcutInfoCompat.Builder(context, "id1") .setShortLabel("Website") .setLongLabel("Open the website") .setIcon(IconCompat.createWithResource(context, R.drawable.icon_website)) .setIntent( Intent( Intent.ACTION_VIEW, Uri.parse("https://www.mysite.example.com/") ) ) .build() ShortcutManagerCompat.pushDynamicShortcut(context, shortcut)
הוספת ספריית השילוב של קיצורי הדרך של Google
ספריית השילוב של קיצורי דרך של Google היא ספריית Jetpack אופציונלית. הוא מאפשר לכם להציג קיצורי דרך דינמיים בפלטפורמות של Android, כמו מרכז האפליקציות, ובפלטפורמות של Google. הספרייה הזו עוזרת למשתמשים לגלות את קיצורי הדרך שלכם כדי לגשת במהירות לתוכן ספציפי או להפעיל מחדש פעולות באפליקציה.
קיצורי הדרך הדינמיים שמועברים באמצעות הספרייה הזו לא כפופים למגבלות על קיצורי הדרך שנאכפות על בסיס כל מכשיר. כך האפליקציה יכולה לשלוח קיצור דרך בכל פעם שמשתמש משלים פעולה משויכת באפליקציה. שליחה של קיצורי דרך בתדירות גבוהה מאפשרת ל-Google להבין את דפוסי השימוש של המשתמש ולהציע לו קיצורי דרך שרלוונטיים להקשר.
לדוגמה, Assistant יכולה ללמוד מקיצורי דרך שנשלחים מאפליקציית מעקב הכושר שלכם שמשתמש בדרך כלל רץ כל בוקר, ולהציע באופן יזום קיצור דרך של 'התחלת ריצה' כשהמשתמש מרים את הטלפון בבוקר.
ספריית השילוב של קיצורי הדרך של Google לא מציעה פונקציונליות שאפשר לפנות אליה ישירות. הוספת הספרייה הזו לאפליקציה מאפשרת לפלטפורמות של Google לקבל את קיצורי הדרך שהאפליקציה שולחת באמצעות ShortcutManagerCompat.
כדי להשתמש בספרייה הזו באפליקציה, מוסיפים את יחסי התלות של Google Shortcuts Integration Library ושל ShortcutManagerCompat לקובץ app/build.gradle או app/build.gradle.kts:
Kotlin
dependencies {
implementation("androidx.core:core:1.6.0")
implementation("androidx.core:core-google-shortcuts:1.0.0")
}
מגניב
dependencies {
implementation "androidx.core:core:1.6.0"
implementation 'androidx.core:core-google-shortcuts:1.0.0'
}
אחרי שמוסיפים את התלויות בספרייה לפרויקט Android, האפליקציה יכולה להשתמש בשיטה pushDynamicShortcut() מ-ShortcutManagerCompat כדי לדחוף קיצורי דרך דינמיים שעומדים בדרישות להצגה במפעיל האפליקציות ובפלטפורמות של Google שמשתתפות בתוכנית.
יצירת קיצורי דרך מוצמדים
ב-Android מגרסה 8.0 (רמת API 26) ואילך, אפשר ליצור קיצורי דרך מוצמדים. בשונה מקיצורי דרך סטטיים ודינמיים, קיצורי דרך מוצמדים מופיעים בתוכנות הפעלה נתמכות כסמלים נפרדים. איור 1 מציג את ההבדל בין שני הסוגים האלה של קיצורי דרך.
כדי להצמיד קיצור דרך ל-Launcher נתמך באמצעות האפליקציה, צריך לבצע את השלבים הבאים:
- משתמשים ב-
isRequestPinShortcutSupported()כדי לוודא שמשגר ברירת המחדל של המכשיר תומך בהצמדת קיצורי דרך בתוך האפליקציה. יוצרים אובייקט
ShortcutInfoCompatשמכיל מזהה, כוונה ותווית קצרה לקיצור הדרך. אם קיצור הדרך קיים, משתמשים במזהה של קיצור הדרך הקיים. המערכת מוצאת ומצמידה באופן אוטומטי את כל שאר המידע שקשור לקיצור הדרך.כדי להצמיד את קיצור הדרך למרכז האפליקציות של המכשיר, מפעילים את הפקודה
requestPinShortcut(). במהלך התהליך הזה, אפשר להעביר אובייקטPendingIntent, שמודיע לאפליקציה רק כשהקיצור מוצמד בהצלחה.אחרי שמוסיפים קיצור דרך, האפליקציה יכולה לעדכן את התוכן שלה באמצעות השיטה
updateShortcuts(). מידע נוסף זמין במאמר בנושא עדכון קיצורי דרך.
בקטע הקוד הבא אפשר לראות איך יוצרים קיצור דרך מוצמד:
if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)) { // Enable the existing shortcut with the ID "my-shortcut". val pinShortcutInfo = ShortcutInfoCompat.Builder(context, "my-shortcut") .setShortLabel("Website") .setIntent( Intent( Intent.ACTION_VIEW, Uri.parse("https://www.mysite.example.com/") ) ) .build() // Create the PendingIntent object only if your app needs to be notified // that the user let the shortcut be pinned. If the pinning operation fails, // your app isn't notified. Assume here that the app implements a method // called createShortcutResultIntent() that returns a broadcast intent. val pinnedShortcutCallbackIntent = ShortcutManagerCompat.createShortcutResultIntent(context, pinShortcutInfo) // Configure the intent so that your app's broadcast receiver gets the // callback successfully. For details, see PendingIntent.getBroadcast(). val successCallback = PendingIntent.getBroadcast( context, /* request code */ 0, pinnedShortcutCallbackIntent, /* flags */ PendingIntent.FLAG_IMMUTABLE ) ShortcutManagerCompat.requestPinShortcut( context, pinShortcutInfo, successCallback.intentSender ) }
יצירת פעילות של קיצור דרך בהתאמה אישית
אפשר גם ליצור פעילות מיוחדת שתעזור למשתמשים ליצור קיצורי דרך, עם אפשרויות בהתאמה אישית ולחצן אישור. באיור 2 מוצגת דוגמה לפעילות מהסוג הזה באפליקציית Gmail.
בקובץ המניפסט של האפליקציה, מוסיפים את ACTION_CREATE_SHORTCUT לרכיב <intent-filter> של הפעילות. ההצהרה הזו מגדירה את ההתנהגות הבאה כשמשתמש מנסה ליצור קיצור דרך:
- המערכת מפעילה את הפעילות המיוחדת של האפליקציה.
- המשתמש מגדיר את האפשרויות לקיצור הדרך.
- המשתמש לוחץ על לחצן האישור.
- האפליקציה יוצרת את קיצור הדרך באמצעות ה-method
createShortcutResultIntent()השיטה הזו מחזירהIntent, שהאפליקציה מעבירה חזרה לפעילות שהופעלה קודם באמצעותsetResult(). - האפליקציה קוראת ל-
finish()בפעילות שמשמשת ליצירת קיצור הדרך המותאם אישית.
באופן דומה, האפליקציה יכולה להציע למשתמשים להוסיף קיצורי דרך מוצמדים למסך הבית אחרי ההתקנה או בפעם הראשונה שהאפליקציה מופעלת. השיטה הזו יעילה כי היא עוזרת למשתמשים ליצור קיצור דרך כחלק מתהליך העבודה הרגיל שלהם.
בדיקת קיצורי דרך
כדי לבדוק את קיצורי הדרך של האפליקציה, מתקינים את האפליקציה במכשיר עם מרכז אפליקציות שתומך בקיצורי דרך. לאחר מכן, מבצעים את הפעולות הבאות:
- לוחצים לחיצה ארוכה על סמל מרכז האפליקציות של האפליקציה כדי לראות את קיצורי הדרך שהגדרתם לאפליקציה.
- גוררים קיצור דרך כדי להצמיד אותו למפעיל האפליקציות של המכשיר.