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

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

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

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

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

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

  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));
    

ปรับปรุงการจัดอันดับของเป้าหมายการแชร์โดยตรง

Sharesheet ของ Android จะแสดงจำนวนเป้าหมายการแชร์โดยตรงคงที่ เหล่านี้ คำแนะนำจะจัดเรียงตามอันดับ คุณสามารถปรับปรุงการจัดอันดับ โดยทำตามขั้นตอนต่อไปนี้

  • ตรวจสอบว่า shortcutIds ทั้งหมดไม่ซ้ำกันและไม่นำมาใช้ซ้ำสำหรับเป้าหมายต่างๆ กัน
  • การโทรจะทำให้ทางลัดใช้งานได้นาน setLongLived(true)
  • สําหรับแป้นพิมพ์ลัดที่เกี่ยวข้องกับการสนทนา ให้รายงานการใช้ทางลัด สำหรับข้อความขาออกและข้อความขาเข้าโดยเผยแพร่ทางลัดที่เกี่ยวข้องอีกครั้ง ถึง ShortcutManagerCompat.pushDynamicShortcut โปรดดูรายงานการใช้ทางลัดสำหรับแอปการสื่อสารในหน้านี้ เพื่อดูรายละเอียด
  • หลีกเลี่ยงการระบุเป้าหมาย Direct Share ที่ไม่เกี่ยวข้องหรือไม่มีอัปเดต ตัวอย่างเช่น รายชื่อติดต่อที่ผู้ใช้ไม่ได้ส่งข้อความถึงในช่วง 30 วันที่ผ่านมา
  • สําหรับแอป SMS ให้หลีกเลี่ยงการใส่ทางลัดสําหรับรหัสสั้นๆ หรือการสนทนา ถูกระบุว่าอาจเป็นสแปม ผู้ใช้มักมีแนวโน้มที่จะแชร์ การสนทนาเหล่านั้น
  • เรียกใช้ setCategories() เพื่อเชื่อมโยงทางลัดกับ เหมาะสม mimeType ตัวอย่างเช่น สําหรับแอป SMS หากผู้ติดต่อไม่ได้เปิดใช้ RCS หรือ MMS คุณก็จะไม่ทำสิ่งต่อไปนี้ เชื่อมโยงทางลัดที่สอดคล้องกันกับประเภท MIME ที่ไม่ใช่ข้อความ เช่น image/* และ video/*
  • สำหรับการสนทนาหนึ่งๆ เมื่อมีการพุชทางลัดแบบไดนามิกและการใช้งานเป็น รายงานแล้ว ไม่ต้องเปลี่ยนรหัสทางลัด วิธีนี้ช่วยให้มั่นใจได้ว่าข้อมูลการใช้งานจะคงอยู่ สำหรับการจัดอันดับ

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

API ทางลัดการแชร์

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

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

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

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

setShortLabel(), setLongLabel()

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

ดูตัวอย่างการเผยแพร่ทางลัดการแชร์บน GitHub

ให้ภาพทางลัด

หากต้องการสร้างทางลัดการแชร์ คุณจะต้องเพิ่มรูปภาพผ่าน setIcon()

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

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

อย่าปกปิดรูปภาพตามรูปร่างที่เจาะจง ตัวอย่างเช่น ก่อนที่จะ Android 10 (API ระดับ 29) มักจะให้รูปโปรไฟล์ผู้ใช้สำหรับการแชร์โดยตรง ChooserTarget ที่ถูกมาสก์เป็นแวดวง Sharesheet ของ Android และอื่นๆ แพลตฟอร์มของระบบใน Android 10 ได้กำหนดรูปร่างและธีมภาพทางลัด วิธีที่แนะนำในการจัดเตรียมทางลัดการแชร์ผ่าน ShortcutManagerCompat กำหนดรูปแบบ Backcompat Direct Share 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>

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

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

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 แอปจะได้รับ ที่สร้างขึ้นเมื่อเพิ่มทางลัดการแชร์ลงใน ทางลัดManagerCompat 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 เพื่อระบุทั้งทางลัดการแชร์และ ChooserTargets

เพื่อให้สามารถทำงานกับไลบรารีความเข้ากันได้ของ AndroidX ไฟล์ Manifest ของแอป ต้องมีชุดตัวเลือกตัวเลือกเป้าหมาย-บริการเมตาและตัวกรอง-ความตั้งใจ โปรดดู 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>

คำถามที่พบบ่อยเกี่ยวกับทางลัดในการแชร์

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

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

การแชร์โดยตรงมีประวัติอย่างไร

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

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

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

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

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

คำแนะนำเกี่ยวกับจำนวนแป้นพิมพ์ลัดการแชร์ที่ควรเผยแพร่

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