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

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

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

ShortcutManagerCompat เป็น AndroidX API ที่ให้ทางลัดการแชร์ และใช้งานร่วมกับ ChooserTargetService API ที่เลิกใช้งานแล้วได้ วิธีนี้เป็นวิธีที่แนะนำในการเผยแพร่ทั้งทางลัดการแชร์และ ChooserTargets ดูวิธีการได้ที่หัวข้อใช้ AndroidX เพื่อระบุทั้งทางลัดการแชร์และ 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 ดังกล่าวใน UI ที่ไม่เกี่ยวข้องกับเป้าหมายที่ผู้ใช้แตะ ตัวอย่างเช่น ในแอปการรับส่งข้อความ การแตะเป้าหมายการแชร์โดยตรงจะนำผู้ใช้ไปยังมุมมองการสนทนากับบุคคลที่เลือก แป้นพิมพ์จะปรากฏขึ้นและระบบจะป้อนข้อมูลที่มีการแชร์ล่วงหน้าในข้อความ

Sharing Shortcuts 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การแชร์โดยตรงที่มีการมาสก์เป็นวงกลม ตอนนี้ชีตการแชร์ของ Android และแพลตฟอร์มอื่นๆ ของระบบใน Android 10 ปรับรูปร่างและธีมของภาพทางลัดแล้ว วิธีแนะนำในการแสดงทางลัดการแชร์ผ่าน 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>

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

ในกรณีที่ผู้ใช้เลือกทางลัดการแชร์ในหน้าจอการแชร์ของ Android ที่ตรงกับตัวอย่างการแชร์เป้าหมายด้านบน แอปจะได้รับ 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>

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

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

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

ไฟล์ Manifest ของแอปต้องมีชุดข้อมูลเมตา chooser-target-service และ intent-filter จึงจะทำงานร่วมกับไลบรารีความเข้ากันได้ของ AndroidX ได้ ดู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 และชื่อบุคคลและทรัพยากร จะเข้าถึงได้เฉพาะบริการของระบบและแอปเดียวกันที่เผยแพร่ทางลัดเท่านั้น

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

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

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

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

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

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

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

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