تقديم أهداف المشاركة المباشرة

الشكل 1: صف المشاركة المباشرة في قائمة المشاركة، كما هو موضّح في 1

استخدِم استهدافات "المشاركة المباشرة" لتسهيل مشاركة عناوين URL أو الصور أو أنواع أخرى من البيانات مع تطبيقك من قِبل مستخدمي التطبيقات الأخرى بشكل أسرع وأسهل. تعمل ميزة "المشاركة المباشرة" من خلال عرض جهات الاتصال من تطبيقات المراسلة والتطبيقات الاجتماعية مباشرةً على "لوحة المشاركة" في Android ، بدون أن يحتاج المستخدمون إلى اختيار التطبيق ثم البحث عن جهة الاتصال.

ShortcutManagerCompat هي واجهة برمجة تطبيقات AndroidX توفّر اختصارات المشاركة، وهي متوافقة مع الإصدارات القديمة من واجهة برمجة التطبيقات ChooserTargetService التي تمّ إيقافها نهائيًا. هذه هي الطريقة المفضّلة لنشر كلّ من "اختصارات المشاركة" وChooserTargets. للحصول على تعليمات، راجِع استخدام AndroidX لتوفير كلّ من اختصارات المشاركة وChooserTargets في هذه الصفحة.

نشر استهدافات المشاركة المباشرة

لا يعرض صف "المشاركة المباشرة" في "لوحة المشاركة" سوى الاختصارات الديناميكية التي تقدّمها واجهة برمجة التطبيقات Sharing Shortcuts API. أكمِل الخطوات التالية لنشر استهدافات ميزة "المشاركة المباشرة".

  1. في ملف موارد XML الخاص بتطبيقك، أدخِل عناصر share-target.

    <shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    <share-target android:targetClass="com.example.android.sharingshortcuts.SendMessageActivity">
        <data android:mimeType="text/plain" />
        <category android:name="com.example.android.sharingshortcuts.category.TEXT_SHARE_TARGET" />
    </share-target>
    </shortcuts>
    
  2. عند بدء تشغيل تطبيقك، استخدِم setDynamicShortcuts لترتيب الاختصارات الديناميكية حسب الأهمية.

    ويشير المؤشر الأصغر إلى أهمية أكبر. إذا كنت بصدد إنشاء تطبيق للتواصل، يمكن أن تكون هذه الرموز المختصرة هي أهم المحادثات مرتبة حسب الأحدث كما تظهر في تطبيقك. لا تنشر اختصارات قديمة، لأنّ المحادثة التي لم يتم فيها تسجيل أي نشاط للمستخدم في آخر 30 يومًا تُعدّ قديمة.

    Kotlin

    ShortcutManagerCompat.setDynamicShortcuts(myContext, listOf(shortcut1, shortcut2, ..))
    

    Java

    List<ShortcutInfoCompat> shortcuts = new ArrayList<>();
    shortcuts.add(shortcut1);
    shortcuts.add(shortcut2);
    ...
    ShortcutManagerCompat.setDynamicShortcuts(myContext, shortcuts);
    
    
  3. إذا كنت تُطوّر تطبيقًا للتواصل، أبلِغ عن استخدام الاختصار من خلال pushDynamicShortcut فورًا في كل مرة يتلقّى فيها المستخدم رسالة من جهة اتصال أو يرسل إليها رسالة. اطّلِع على الإبلاغ عن استخدام اختصارات تطبيقات المراسلة في هذه الصفحة للحصول على مزيد من المعلومات. على سبيل المثال، يمكنك الإبلاغ عن استخدام الرسائل التي أرسلها المستخدم من خلال تحديد عمليات ربط الإمكانات في الاختصار من خلال ShortcutInfoCompat.Builder#addCapabilityBinding باستخدام ميزة actions.intent.SEND_MESSAGE.

    Kotlin

    val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
      ...
      .setShortLabel(firstName)
      .setLongLabel(fullName)
      .setCategories(matchedCategories)
      .setLongLived(true)
    .addCapabilityBinding("actions.intent.SEND_MESSAGE").build()
    ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
    

    Java

    ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
      ...
      .setShortLabel(firstName)
      .setLongLabel(fullName)
      .setCategories(matchedCategories)
      .setLongLived(true)
      .addCapabilityBinding("actions.intent.SEND_MESSAGE")
      .build();
    
    ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
    
  4. إذا حذف المستخدم جهة اتصال، استخدِم removeLongLivedShortcut. هذه هي الطريقة المفضّلة لإزالة الاختصار بغض النظر عمّا إذا كانت خدمات النظام قد أنشأت ذاكرة تخزين مؤقت للاختصار. يعرض مقتطف الرمز التالي مثالاً على كيفية إجراء ذلك.

    Kotlin

    val deleteShortcutId = "..."
    ShortcutManagerCompat.removeLongLivedShortcuts(myContext, listOf(deleteShortcutId))
    

    Java

    String deleteShortcutId = "...";
    ShortcutManagerCompat.removeLongLivedShortcuts(
        myContext, Arrays.asList(deleteShortcutId));
    
    

تحسين ترتيب استهدافات المشاركة المباشرة

تعرِض شاشة المشاركة في Android عددًا ثابتًا من استهدافات المشاركة المباشرة. يتم ترتيب هذه الاقتراحات حسب ترتيبها. يمكنك تحسين ترتيب الاختصارات من خلال اتّباع الخطوات التالية:

  • تأكَّد من أنّ جميع قيم shortcutIds فريدة ولا تتم إعادة استخدامها مطلقًا لاستهدافات مختلفة.
  • تأكَّد من أنّ الاختصار صالح لفترة طويلة من خلال الاتصال بالرقم setLongLived(true).
  • بالنسبة إلى الاختصارات ذات الصلة بالمحادثات، يمكنك الإبلاغ عن استخدام الاختصار للرسائل الصادرة والواردة من خلال إعادة نشر الاختصارات المقابلة من خلال ShortcutManagerCompat.pushDynamicShortcut. اطّلِع على الإبلاغ عن استخدام الاختصارات في تطبيقات المراسلة على هذه الصفحة لمعرفة التفاصيل.
  • تجنَّب تقديم استهدافات غير ملائمة أو قديمة للمشاركة المباشرة، مثل جهات الاتصال التي لم يراسلها المستخدم خلال آخر 30 يومًا.
  • بالنسبة إلى تطبيقات الرسائل القصيرة، تجنَّب توفير اختصارات للرموز القصيرة أو المحادثات التي تم رصدها على أنّها رسائل غير مرغوب فيها. من غير المرجّح أن يشارك المستخدمون في هذه المحادثات.
  • اتّصل بـ setCategories() لربط الاختصار بال سمات mimeType المناسبة. على سبيل المثال، في تطبيق الرسائل القصيرة، إذا لم تكن جهة الاتصال مفعَّلة لاستخدام خدمة RCS أو رسائل الوسائط المتعددة، لن تتم ربط الاختصار المقابل بأنواع MIME غير النصية، مثل image/* وvideo/*.
  • بالنسبة إلى محادثة معيّنة، بعد نشر اختصار ديناميكي والإبلاغ عن الاستخدام، لا تغيّر معرّف الاختصار. ويضمن ذلك الاحتفاظ ببيانات الاستخدام لتحديد الترتيب.

إذا نقر المستخدم على أيّ هدف من أهداف "المشاركة المباشرة"، يجب أن ينقل تطبيقك المستخدم إلى واجهة مستخدم يمكنه فيها تنفيذ إجراء على موضوع الهدف مباشرةً. لا تعرِض على المستخدم واجهة مستخدم لإزالة الالتباس، ولا تضعه في واجهة مستخدم غير مرتبطة بالهدف الذي تم النقر عليه. على سبيل المثال، في تطبيق مراسلة، يؤدي النقر على هدف مشاركة مباشرة إلى نقل المستخدم إلى عرض محادثة مع المستخدم الذي اختاره. تظهر الكتابة اللاتينية والرسالة مملوءة مسبقًا بالبيانات المشترَكة.

Sharing Shortcuts API

اعتبارًا من Android 10 (المستوى 29 من واجهة برمجة التطبيقات)،أضافت ShortcutInfo.Builder طُرقًا وتحسينات توفّر معلومات إضافية عن استهداف الحصة:

setCategories()
بدءًا من الإصدار 10 من Android، يتم استخدام الفئات أيضًا لفلترة الاختصارات التي يمكنها معالجة نوايا المشاركة أو الإجراءات. اطّلِع على الإفصاح عن مشاركة الاستهداف للاطّلاع على التفاصيل. هذا الحقل مطلوب للاختصارات المخصّصة للاستخدام كأهداف للمشاركة.
setLongLived()

يحدِّد ما إذا كان الاختصار صالحًا أم لا عندما يكون قد تم إلغاء نشره أو جعله غير مرئي من خلال التطبيق (كاختصار ديناميكي أو مُثبَّت). إذا كان الاختصار مُستخدَمًا لفترة طويلة، يمكن أن تخزّنه خدمات النظام المختلفة في ذاكرة التخزين المؤقت حتى بعد إلغاء نشره كاختصار ديناميكي.

يمكن أن يؤدي جعل الاختصار متاحًا لفترة طويلة إلى تحسين ترتيبه. اطّلِع على الحصول على أفضل ترتيب لمعرفة التفاصيل.

setShortLabel()، setLongLabel()

عند نشر اختصار لمستخدم فردي، يُرجى تضمين اسمه الكامل في الحقل setLongLabel() وأي اسم مختصر، مثل لقب أو اسم أولاً، في الحقل setShortLabel().

اطّلِع على مثال على نشر اختصارات المشاركة على GitHub.

تقديم صور للاختصارات

لإنشاء اختصار مشاركة، عليك إضافة صورة من خلال setIcon().

يمكن أن تظهر اختصارات المشاركة على مساحات عرض النظام وقد يتم تغيير شكلها. بالإضافة إلى ذلك، قد تعرض بعض الأجهزة التي تعمل بالإصدارات 7 أو 8 أو 9 من نظام التشغيل Android (المستويات 25 و 26 و27 و28 من واجهة برمجة التطبيقات) رموزًا مكوّنة من ملفات بترميز ثنائي فقط بدون خلفية، ما يؤدي بدوره إلى خفض التباين بشكل كبير. لضمان ظهور الاختصار بالشكل المطلوب، قدِّم صورة نقطية قابلة للتكيّف باستخدام IconCompat.createWithAdaptiveBitmap().

تأكّد من أنّ ملفات الأشكال المرقّعة التكيُّفية تتّبع الإرشادات والأبعاد نفسها المحدّدة للرموز التكيُّفية. وأكثر الطرق شيوعًا لإجراء ذلك هي تكبير الصورة المركّبة المربّعة المقصودة إلى 72×72 بكسل وتوسيعها في منتصف لوحة شفافة بحجم 108×108 بكسل. إذا كان رمزك يحتوي على مناطق شفافة، يجب تضمين لون خلفية، وإلا ستظهر مناطقه الشفافة باللون الأسود.

لا تقدِّم صورًا تم حجبها لتظهر على شكل معيّن. على سبيل المثال، قبل الإصدار Android 10 (المستوى 29 من واجهة برمجة التطبيقات)، كان من الشائع توفير صور رمزية للمستخدمين في رمز مشاركة مباشرة ChooserTarget تم حجبه في دائرة. في نظام التشغيل Android 10، أصبحت لوحة المشاركة في Android ومساحات عرض النظام الأخرى تحدّد شكل صور الاختصارات وتصميمها. الطريقة المفضّلة لتقديم اختصارات المشاركة، من خلال ShortcutManagerCompat، هي تحويل عناصر ChooserTarget المشاركة المباشرة المتوافقة مع الإصدارات القديمة تلقائيًا إلى دوائر.

تحديد هدف حصة

يجب تحديد استهدافات المشاركة في ملف موارد التطبيق، تمامًا مثل تعريفات الاختصارات الثابتة. أضِف تعريفات مشاركة الأهداف داخل العنصر الجذر <shortcuts> في ملف الموارد، بالإضافة إلى تعريفات الاختصارات الثابتة الأخرى. يحتوي كل عنصر <share-targets> على معلومات عن نوع البيانات المشترَكة والفئات المطابقة والهدف الفئة التي ستعالج نية المشاركة. يبدو رمز XML على النحو التالي:

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
  <share-target android:targetClass="com.example.android.sharingshortcuts.SendMessageActivity">
    <data android:mimeType="text/plain" />
    <category android:name="com.example.android.sharingshortcuts.category.TEXT_SHARE_TARGET" />
  </share-target>
</shortcuts>

يشبه عنصر البيانات في هدف المشاركة مواصفات البيانات في فلتر الأهداف. يمكن أن يتضمّن كلّ هدف مشاركة فئات متعدّدة، لا تُستخدَم إلا لمطابقة اختصارات التطبيق المنشورة مع تعريفات أهداف المشاركة. يمكن أن تحتوي الفئات على أي قيم مُعيّنة عشوائية تحدّدها التطبيقات.

في حال اختيار المستخدم اختصار المشاركة في لوحة المشاركة في Android الذي يتطابق مع مثال المشاركة المستهدَفة أعلاه، سيحصل التطبيق على نية المشاركة التالية:

Action: Intent.ACTION_SEND
ComponentName: {com.example.android.sharingshortcuts /
                com.example.android.sharingshortcuts.SendMessageActivity}
Data: Uri to the shared content
EXTRA_SHORTCUT_ID: <ID of the selected shortcut>

إذا فتح المستخدم وجهة المشاركة من اختصارات مشغّل التطبيقات، سيحصل التطبيق على النيّة التي تم إنشاؤها عند إضافة اختصار المشاركة إلى ShortcutManagerCompat. بما أنّه طلب مختلف، لن يكون الخيار Intent.EXTRA_SHORTCUT_ID متاحًا، وعليك إرسال رقم التعريف يدويًا إذا كنت بحاجة إليه.

الإبلاغ عن استخدام الاختصارات في تطبيقات التواصل

إذا كنت تُطوّر تطبيقًا للتواصل، يمكنك تحسين ترتيبك في جدول مشاركة التطبيقات على Android من خلال الإبلاغ عن استخدام كلٍّ من الرسائل الصادرة والواردة. لإجراء ذلك، عليك إعادة نشر اختصار المحادثة الذي يمثّل جهة الاتصال من خلال ShortcutManagerCompat.pushDynamicShortcut.

إنّ استخدام الاختصارات وعمليات ربط الإمكانات متوافقة مع الإصدارات القديمة من Android 5.0 (واجهة برمجة التطبيقات 21).

الإبلاغ عن استخدام الاختصارات للرسائل الصادرة

إنّ الإبلاغ عن استخدام الرسائل التي يرسلها المستخدم يشبه من الناحية الوظيفية النقر على الزر "إرسال" بعد إنشاء رسالة.

لبدء إعداد تقارير الاستخدام، حدِّد عمليات ربط الإمكانات في الاختصار من خلال ShortcutInfoCompat.Builder#addCapabilityBinding باستخدام إمكانات actions.intent.SEND_MESSAGE.

Kotlin

val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(firstName)
  .setLongLabel(fullName)
  .setCategories(matchedCategories)
  .setLongLived(true)
.addCapabilityBinding("actions.intent.SEND_MESSAGE").build()
ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)

Java

ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(firstName)
  .setLongLabel(fullName)
  .setCategories(matchedCategories)
  .setLongLived(true)
  .addCapabilityBinding("actions.intent.SEND_MESSAGE")
  .build();

ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);

إذا كانت الرسالة الصادرة مخصّصة لمحادثة جماعية، يجب أيضًا إضافة قيمة المَعلمة Audience لأنّ نوع recipient مرتبط بالقدرة.

Kotlin

val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(groupShortTitle)
  .setLongLabel(groupLongTitle)
  .setCategories(matchedCategories)
  .setLongLived(true)
  .addCapabilityBinding("actions.intent.SEND_MESSAGE", "message.recipient.@type", listOf("Audience")).build()

ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)

Java

ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(groupShortTitle)
  .setLongLabel(groupLongTitle)
  .setCategories(matchedCategories)
  .setLongLived(true)
  .addCapabilityBinding("actions.intent.SEND_MESSAGE", "message.recipient.@type", Arrays.asList("Audience"))
  .build();

ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);

الإبلاغ عن استخدام الاختصار للرسائل الواردة

لبدء تسجيل الاستخدام عندما يتلقّى المستخدم رسالة، مثل رسالة SMS أو رسالة محادثة أو رسالة إلكترونية أو إشعارات، عليك أيضًا تحديد عمليات ربط بالمهام في الاختصار من خلال ShortcutInfoCompat.Builder#addCapabilityBinding باستخدام إمكانية actions.intent.RECEIVE_MESSAGE.

Kotlin

val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(firstName)
  .setLongLabel(fullName)
  .setCategories(matchedCategories)
  .setLongLived(true)
  .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE").build()

ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)

Java

ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(firstName)
  .setLongLabel(fullName)
  .setCategories(matchedCategories)
  .setLongLived(true)
  .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE")
  .build();

ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);

إذا كانت الرسالة الواردة واردة من محادثة جماعية، يجب أيضًا إضافة قيمة المَعلمة Audience لأنّ نوع sender مرتبط بالقدرة.

Kotlin

val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(groupShortTitle)
  .setLongLabel(groupLongTitle)
  .setCategories(matchedCategories)
  .setLongLived(true)
  .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE", "message.sender.@type", listOf("Audience")).build()

ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)

Java

ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier)
  ...
  .setShortLabel(groupShortTitle)
  .setLongLabel(groupLongTitle)
  .setCategories(matchedCategories)
  .setLongLived(true)
  .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE", "message.sender.@type", Arrays.asList("Audience"))
  .build();

ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);

استخدام AndroidX لتوفير كلّ من اختصارات المشاركة وChooserTargets

لكي تتمكّن من استخدام مكتبة التوافق AndroidX، يجب أن يحتوي بيان التطبيق على مجموعة فلاتر الأهداف والخدمات واختيار البيانات الوصفية. اطّلِع على واجهة برمجة التطبيقات الحالية ChooserTargetService Direct Share.

سبق أن تم تقديم بيان عن هذه الخدمة في مكتبة التوافق، لذا ليس على المستخدم تقديم بيان عن الخدمة في بيان التطبيق. ومع ذلك، يجب مراعاة الرابط من نشاط المشاركة إلى الخدمة كمقدّم خدمة مستهدَف في أداة الاختيار.

في المثال التالي، يتم تنفيذ ChooserTargetService باستخدام androidx.core.content.pm.ChooserTargetServiceCompat، والذي سبق أن تم تعريفه في AndroidX:

<activity
    android:name=".SendMessageActivity"
    android:label="@string/app_name"
    android:theme="@style/SharingShortcutsDialogTheme">
    <!-- This activity can respond to Intents of type SEND -->
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>
    <!-- Only needed if you import the sharetarget AndroidX library that
         provides backwards compatibility with the old DirectShare API.
         The activity that receives the Sharing Shortcut intent needs to be
         taken into account with this chooser target provider. -->
    <meta-data
        android:name="android.service.chooser.chooser_target_service"
        android:value="androidx.sharetarget.ChooserTargetServiceCompat" />
</activity>

الأسئلة الشائعة حول اختصارات ميزة المشاركة

كيف يتم تخزين بيانات استخدام الاختصارات وهل يتم نقلها خارج الجهاز؟

يتم تخزين الاختصارات بالكامل على الجهاز في دليل بيانات النظام في أحد ملفّات مشاركة البيانات في ملفّات مشفّرة. لا يمكن الوصول إلى المعلومات في الاختصارات، مثل الرمز والهدف وأسماء الأشخاص والموارد، إلا من خلال خدمات النظام والتطبيق نفسه الذي ينشر الاختصارات.

ما هو تاريخ ميزة "المشاركة المباشرة"؟

لقد طرحنا ميزة "المشاركة المباشرة" في الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات) للسماح للتطبيقات ب توفير عناصر ChooserTarget من خلال ChooserTargetService. تم استرجاع النتائج بشكل تفاعلي عند الطلب، ما أدّى إلى بطء وقت تحميل الاستهدافات.

في Android 10 (المستوى 29 لواجهة برمجة التطبيقات)، استبدلنا واجهات برمجة التطبيقات ChooserTargetService Direct Share API بواجهة برمجة التطبيقات الجديدة Sharing Shortcuts API. بدلاً من استرداد النتائج بشكل تفاعلي عند الطلب، تسمح واجهة برمجة التطبيقات Sharing Shortcuts API للتطبيقات بنشر استهدافات ميزة "المشاركة المباشرة" مسبقًا. وقد أدّى ذلك إلى تسريع عملية استرداد استهدافات ميزة "المشاركة المباشرة" عند إعداد ShareSheet. سيستمر عمل آلية ChooserTargetService المشاركة المباشرة ، ولكن يصنّف النظام الاستهدافات المقدَّمة بهذه الطريقة على أنّها أقل أهمية من أي استهداف يستخدم واجهة برمجة التطبيقات Sharing Shortcuts API.

أوقف نظام التشغيل Android 11 (المستوى 30 لواجهة برمجة التطبيقات) خدمة ChooserTargetService نهائيًا، وتعد واجهة برمجة التطبيقات Sharing Shortcuts API هي الطريقة الوحيدة لتوفير استهدافات المشاركة المباشرة.

ما الفرق بين الاختصارات المنشورة لاستهدافات المشاركة واختصارات مشغّل التطبيقات (الاستخدام المعتاد للاختصارات عند الضغط مع الاستمرار على رموز التطبيقات في مشغّل التطبيقات)؟

إنّ أي اختصارات يتم نشرها بغرض "مشاركة الهدف" هي أيضًا اختصارات لبدء التطبيقات، وستظهر في القائمة عند الضغط مع الاستمرار على رمز تطبيقك. ينطبق الحد الأقصى المسموح به لإجمالي عدد التطبيقات المخصّصة لكل نشاط أيضًا على إجمالي عدد التطبيقات المخصّصة التي ينشرها التطبيق (أهداف المشاركة واختصارات مشغّل التطبيقات القديم مجتمعة).

ما هي الإرشادات حول عدد اختصارات المشاركة التي يجب نشرها؟

يقتصر عدد اختصارات المشاركة على الحد الأقصى نفسه لعمليات الاختصارات الديناميكية المتاحة من خلال getMaxShortcutCountPerActivity(android.content.Context). يمكن نشر أي عدد ضمن هذا الحدّ، ولكن يجب مراعاة أنّ اختصارات المشاركة يمكن أن تظهر عند الضغط مع الاستمرار على مشغّل التطبيقات وفي لوحة المشاركة. تعرض معظم مشغّلات التطبيقات عند الضغط مع الاستمرار أربعة أو خمسة اختصارات كحد أقصى في الوضع العمودي، و ثمانية اختصارات في الوضع الأفقي. يمكنك الاطّلاع على الأسئلة الشائعة التالية للحصول على مزيد من التفاصيل والإرشادات حول مشاركة الاختصارات.