ระบุเป้าหมายส่วนแบ่งโดยตรง

รูปที่ 1: แถวการแชร์โดยตรงในชีตแชร์ ดังที่แสดงโดย 1

ใช้เป้าหมายการแชร์โดยตรงเพื่อให้ผู้ใช้แอปอื่นๆ แชร์ URL รูปภาพ หรือข้อมูลประเภทอื่นๆ กับแอปของคุณได้ง่ายและรวดเร็วยิ่งขึ้น การแชร์โดยตรงทำงานโดยการแสดงรายชื่อติดต่อจากแอปส่งข้อความและแอปโซเชียลในชีตแชร์ของ Android โดยตรง ผู้ใช้จึงไม่ต้องเลือกแอปแล้วค้นหารายชื่อติดต่อ

ShortcutManagerCompat เป็น AndroidX API ที่มี Sharing Shortcuts และเข้ากันได้กับ API ChooserTargetService ที่เลิกใช้งานแล้ว ซึ่งเป็นวิธีที่แนะนำในการเผยแพร่ทั้ง Sharing Shortcuts และ ChooserTargets ดูวิธีการได้ที่ หัวข้อใช้ AndroidX เพื่อระบุทั้ง Sharing Shortcuts และ ChooserTargets ในหน้านี้

เผยแพร่เป้าหมายการแชร์โดยตรง

แถวการแชร์โดยตรงของชีตแชร์จะแสดงเฉพาะทางลัดแบบไดนามิกที่ Sharing Shortcuts API ระบุไว้ ทำตามขั้นตอนต่อไปนี้เพื่อเผยแพร่เป้าหมายการแชร์โดยตรง

  1. ประกาศองค์ประกอบ share-target ในไฟล์ทรัพยากร 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>
    
  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 วันที่ผ่านมา
  • สำหรับแอป SMS ให้หลีกเลี่ยงการระบุทางลัดสำหรับรหัสสั้นหรือบทสนทนาที่ระบุว่าเป็นสแปมที่อาจเกิดขึ้น เนื่องจากผู้ใช้ไม่น่าจะแชร์ไปยังบทสนทนาเหล่านั้น
  • เรียกใช้ setCategories() เพื่อเชื่อมโยงทางลัดกับ แอตทริบิวต์ mimeType ที่เหมาะสม ตัวอย่างเช่น สำหรับแอป SMS หากรายชื่อติดต่อไม่ได้เปิดใช้ RCS หรือ MMS คุณจะไม่เชื่อมโยงทางลัดที่เกี่ยวข้องกับ MIME ประเภทที่ไม่ใช่ข้อความ เช่น image/* และ video/*
  • สำหรับบทสนทนาหนึ่งๆ เมื่อมีการพุชทางลัดแบบไดนามิกและมีการรายงานการใช้งานแล้ว อย่าเปลี่ยนรหัสทางลัด เพื่อให้ระบบเก็บรักษาข้อมูลการใช้งานไว้สำหรับการจัดอันดับ

หากผู้ใช้แตะเป้าหมายการแชร์โดยตรง แอปของคุณจะต้องนำผู้ใช้ไปยัง UI ที่ผู้ใช้สามารถดำเนินการกับเรื่องของเป้าหมายได้โดยตรง อย่าแสดง UI ที่ทำให้ผู้ใช้สับสนและอย่าวางผู้ใช้ไว้ใน UI ที่ไม่เกี่ยวข้องกับเป้าหมายที่แตะ ตัวอย่างเช่น ในแอปรับส่งข้อความ การแตะเป้าหมายการแชร์โดยตรงจะนำผู้ใช้ไปยังมุมมองการสนทนากับบุคคลที่เลือก โดยแป้นพิมพ์จะปรากฏขึ้นและข้อความจะมีการป้อนข้อมูลที่แชร์ไว้ล่วงหน้า

Sharing Shortcuts API

ตั้งแต่ Android 10 (ระดับ API 29) เป็นต้นไป ShortcutInfo.Builder ได้เพิ่มเมธอดและการปรับปรุง ที่ให้ข้อมูลเพิ่มเติมเกี่ยวกับเป้าหมายการแชร์ ดังนี้

setCategories()
ตั้งแต่ Android 10 เป็นต้นไป ระบบจะใช้หมวดหมู่เพื่อกรองทางลัดที่จัดการ Intent หรือการดำเนินการแชร์ได้ด้วย ดูรายละเอียดได้ที่หัวข้อประกาศเป้าหมายการแชร์ ช่องนี้จำเป็นสำหรับทางลัดที่ต้องการใช้เป็นเป้าหมายการแชร์
setLongLived()

ระบุว่าทางลัดจะยังคงใช้งานได้หรือไม่เมื่อแอปยกเลิกการเผยแพร่หรือทำให้ทางลัดไม่ปรากฏ (เป็นทางลัดแบบไดนามิกหรือทางลัดที่ปักหมุดไว้) หากทางลัดมีอายุการใช้งานยาวนาน บริการต่างๆ ของระบบจะแคชทางลัดไว้ได้แม้หลังจากที่ยกเลิกการเผยแพร่เป็นทางลัดแบบไดนามิกแล้ว

การทำให้ทางลัดมีอายุการใช้งานยาวนานจะช่วยปรับปรุงการจัดอันดับของทางลัดได้ ดูรายละเอียดได้ที่หัวข้อรับการจัดอันดับ ที่ดีที่สุด

setShortLabel(), setLongLabel()

เมื่อเผยแพร่ทางลัดไปยังบุคคลใดบุคคลหนึ่ง โปรดระบุชื่อเต็มของบุคคลดังกล่าวใน setLongLabel() และชื่อย่อ เช่น ชื่อเล่นหรือชื่อจริง ใน setShortLabel()

ดูตัวอย่างการเผยแพร่ Sharing Shortcuts ใน GitHub

ระบุรูปภาพทางลัด

หากต้องการสร้าง Sharing Shortcut คุณจะต้องเพิ่มรูปภาพผ่าน setIcon()

Sharing Shortcuts อาจปรากฏในแพลตฟอร์มต่างๆ ของระบบและอาจมีการปรับรูปร่าง นอกจากนี้ อุปกรณ์บางเครื่องที่ใช้ Android เวอร์ชัน 7, 8 หรือ 9 (API ระดับ 25, 26, 27 และ 28) อาจแสดงไอคอนแบบบิตแมปเท่านั้นโดยไม่มีพื้นหลัง ซึ่งจะลดคอนทราสต์ลงอย่างมาก หากต้องการให้ทางลัดมีลักษณะตามที่ต้องการ ให้ระบุบิตแมปแบบปรับได้โดยใช้ IconCompat.createWithAdaptiveBitmap()

ตรวจสอบว่าบิตแมปแบบปรับได้เป็นไปตามหลักเกณฑ์และขนาดเดียวกันกับที่กำหนดไว้สำหรับไอคอนแบบปรับได้ วิธีที่ใช้กันมากที่สุดคือการปรับขนาดบิตแมปสี่เหลี่ยมจัตุรัสที่ต้องการเป็น 72x72 dp และวางไว้ตรงกลางใน Canvas แบบโปร่งใสขนาด 108x108 dp หากไอคอนมีพื้นที่โปร่งใส คุณต้องใส่สีพื้นหลัง ไม่เช่นนั้นพื้นที่โปร่งใสจะปรากฏเป็นสีดำ

อย่าระบุรูปภาพที่มาสก์เป็นรูปร่างที่เฉพาะเจาะจง ตัวอย่างเช่น ก่อน Android 10 (API ระดับ 29) ผู้คนมักจะระบุอวาตาร์ของผู้ใช้สำหรับ ChooserTarget ของการแชร์โดยตรงที่มาสก์เป็นวงกลม ตอนนี้ Android Sharesheet และแพลตฟอร์มอื่นๆ ของระบบใน Android 10 จะปรับรูปร่างและกำหนดธีมรูปภาพทางลัด วิธีที่แนะนำในการระบุ Sharing Shortcuts ผ่าน ShortcutManagerCompat, จะปรับรูปร่างออบเจ็กต์ ChooserTarget ของการแชร์โดยตรงที่เข้ากันได้แบบย้อนหลังเป็น วงกลมให้คุณโดยอัตโนมัติ

ประกาศเป้าหมายการแชร์

ต้องประกาศเป้าหมายการแชร์ในไฟล์ทรัพยากรของแอป ซึ่งคล้ายกับการกำหนดทางลัดแบบคงที่ เพิ่มการกำหนดเป้าหมายการแชร์ ภายในองค์ประกอบรูท <shortcuts> ในไฟล์ทรัพยากร พร้อมกับการกำหนดทางลัดแบบคงที่อื่นๆ องค์ประกอบ <share-targets> แต่ละรายการ จะมีข้อมูลเกี่ยวกับประเภทข้อมูลที่แชร์ หมวดหมู่ที่ตรงกัน และคลาสเป้าหมาย ที่จะจัดการ Intent การแชร์ โค้ด 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>

องค์ประกอบข้อมูลในเป้าหมายการแชร์จะคล้ายกับการระบุข้อมูลในตัวกรอง Intent เป้าหมายการแชร์แต่ละรายการจะมีหลายหมวดหมู่ ซึ่งใช้เพื่อจับคู่ทางลัดที่เผยแพร่ของแอปกับการกำหนดเป้าหมายการแชร์เท่านั้น หมวดหมู่จะมีค่าที่กำหนดโดยแอปได้

ในกรณีที่ผู้ใช้เลือกทางลัดการแชร์ใน Android Sharesheet ที่ตรงกับเป้าหมายการแชร์ตัวอย่างข้างต้น แอปจะได้รับ Intent การแชร์ต่อไปนี้

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>

หากผู้ใช้เปิดเป้าหมายการแชร์จากทางลัดของ Launcher แอปจะได้รับ Intent ที่สร้างขึ้นเมื่อเพิ่มทางลัดการแชร์ลงใน ShortcutManagerCompat เนื่องจากเป็น Intent อื่น Intent.EXTRA_SHORTCUT_ID จึงไม่พร้อมใช้งาน และคุณจะต้องส่งรหัสด้วยตนเองหากต้องการ

รายงานการใช้งานทางลัดสำหรับแอปการสื่อสาร

หากคุณกำลังพัฒนาแอปการสื่อสาร คุณสามารถปรับปรุงการจัดอันดับใน Android Sharesheet ได้โดยรายงานการใช้งานทั้งข้อความขาออกและข้อความขาเข้า โดยเผยแพร่ทางลัดของบทสนทนาที่แสดงถึงรายชื่อติดต่ออีกครั้งผ่าน ShortcutManagerCompat.pushDynamicShortcut

การใช้งานทางลัดและการผูกความสามารถเข้ากันได้แบบย้อนหลังกับ Android 5.0 (API 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 เพื่อระบุทั้ง Sharing Shortcuts และ ChooserTargets

หากต้องการใช้ไลบรารีความเข้ากันได้ของ AndroidX ได้ Manifest ของแอปต้องมีข้อมูลเมตา chooser-target-service และชุดตัวกรอง Intent ดู ChooserTargetService Direct Share API ปัจจุบัน

บริการนี้ประกาศไว้แล้วในไลบรารีความเข้ากันได้ ผู้ใช้จึงไม่จำเป็นต้องประกาศบริการใน Manifest ของแอป อย่างไรก็ตาม คุณต้องพิจารณาลูกศรจากกิจกรรมการแชร์ไปยังบริการในฐานะผู้ให้บริการเป้าหมายตัวเลือก

ในตัวอย่างต่อไปนี้ การติดตั้งใช้งาน 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>

คำถามที่พบบ่อยเกี่ยวกับ Sharing Shortcuts

ระบบจัดเก็บข้อมูลการใช้งานทางลัดอย่างไรและข้อมูลดังกล่าวออกจากอุปกรณ์หรือไม่

ระบบจะจัดเก็บทางลัดไว้ในอุปกรณ์ทั้งหมดในไดเรกทอรีข้อมูลของระบบในพาร์ติชันดิสก์ที่เข้ารหัส เฉพาะบริการของระบบและแอปเดียวกันที่เผยแพร่ทางลัดเท่านั้นที่จะเข้าถึงข้อมูลในทางลัด เช่น ไอคอน, Intent รวมถึงชื่อบุคคลและทรัพยากร

ประวัติของการแชร์โดยตรงเป็นอย่างไร

เราได้เปิดตัวการแชร์โดยตรงใน Android 6.0 (ระดับ API 23) เพื่อให้แอประบุออบเจ็กต์ ChooserTarget ผ่าน ChooserTargetService ได้ ระบบจะดึงข้อมูลผลลัพธ์แบบโต้ตอบตามความต้องการ ซึ่งทำให้เป้าหมายโหลดช้า

ใน Android 10 (API ระดับ 29) เราได้แทนที่ ChooserTargetService Direct Share API ด้วย Sharing Shortcuts API ใหม่ Sharing Shortcuts API ช่วยให้แอปเผยแพร่เป้าหมายการแชร์โดยตรงล่วงหน้าได้แทนที่จะดึงข้อมูลผลลัพธ์แบบโต้ตอบตามความต้องการ ซึ่งช่วยเร่งกระบวนการดึงข้อมูลเป้าหมายการแชร์โดยตรงเมื่อเตรียมชีตแชร์ได้อย่างรวดเร็ว กลไกการแชร์โดยตรงของ ChooserTargetService จะยังคงทำงานได้ แต่ระบบจะจัดอันดับเป้าหมายที่ระบุด้วยวิธีนี้ต่ำกว่าเป้าหมายที่ใช้ Sharing Shortcuts API

Android 11 (ระดับ API 30) เลิกใช้งานบริการ ChooserTargetService แล้ว และ Sharing Shortcuts API เป็นวิธีเดียวในการระบุเป้าหมายการแชร์โดยตรง

ทางลัดที่เผยแพร่สำหรับเป้าหมายการแชร์แตกต่างจากทางลัดของ Launcher (การใช้งานทางลัดทั่วไปเมื่อกดไอคอนแอปใน Launcher ค้างไว้) อย่างไร

ทางลัดทั้งหมดที่เผยแพร่เพื่อวัตถุประสงค์ "เป้าหมายการแชร์" จะเป็นทางลัดของ Launcher ด้วย และจะแสดงในเมนูเมื่อกดไอคอนแอปค้างไว้ ขีดจำกัดจำนวนทางลัดสูงสุดต่อกิจกรรมจะมีผลกับจำนวนทางลัดทั้งหมดที่แอปเผยแพร่ด้วย (เป้าหมายการแชร์และทางลัดของ Launcher แบบเดิมรวมกัน)

คำแนะนำเกี่ยวกับจำนวน Sharing Shortcuts ที่ควรเผยแพร่มีอะไรบ้าง

จำนวน Sharing Shortcuts จะจำกัดไว้ที่ขีดจำกัดเดียวกันกับทางลัดแบบไดนามิก ที่พร้อมใช้งานผ่าน getMaxShortcutCountPerActivity(android.content.Context) คุณสามารถเผยแพร่ได้ตามจำนวนที่ขีดจำกัดอนุญาต แต่ต้องคำนึงว่า Sharing Shortcuts อาจปรากฏในการกดไอคอนแอปค้างไว้ใน Launcher และในชีตแชร์ Launcher ของแอปส่วนใหญ่จะแสดงทางลัดสูงสุด 4 หรือ 5 รายการในโหมดแนวตั้ง และ 8 รายการในโหมดแนวนอนเมื่อกดไอคอนแอปค้างไว้ ดูรายละเอียดเพิ่มเติมและคำแนะนำเกี่ยวกับ Sharing Shortcuts ได้ที่ คำถามที่พบบ่อย นี้