
ใช้เป้าหมายการแชร์โดยตรงเพื่อให้ผู้ใช้แอปอื่นๆ แชร์ URL, รูปภาพ หรือข้อมูลประเภทอื่นๆ กับแอปของคุณได้ง่ายและรวดเร็วยิ่งขึ้น การแชร์โดยตรงจะทำงาน โดยการแสดงรายชื่อติดต่อจากแอปส่งข้อความและแอปโซเชียลบนชีตการแชร์ของ Android โดยตรง โดยที่ผู้ใช้ไม่ต้องเลือกแอปแล้วค้นหารายชื่อติดต่อ
ShortcutManagerCompat
เป็น AndroidX API ที่มีทางลัดการแชร์ และเข้ากันได้แบบย้อนหลังกับ ChooserTargetService
API ที่เลิกใช้งานแล้ว วิธีนี้เป็นวิธีที่แนะนำ
ในการเผยแพร่ทั้งทางลัดการแชร์และ ChooserTargets
ดูวิธีการได้ที่หัวข้อใช้ AndroidX เพื่อระบุทั้งทางลัดการแชร์และ ChooserTarget
ในหน้านี้
เผยแพร่เป้าหมายการแชร์โดยตรง
แถวการแชร์โดยตรงของแผ่นแชร์จะแสดงเฉพาะทางลัดแบบไดนามิกที่ได้รับจาก Sharing Shortcuts API ทำตามขั้นตอนต่อไปนี้เพื่อเผยแพร่เป้าหมายการแชร์โดยตรง
ประกาศองค์ประกอบ
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>
เมื่อแอปเริ่มต้น ให้ใช้
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);
หากคุณกำลังพัฒนาแอปการสื่อสาร ให้รายงานการใช้ทางลัดผ่าน
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);
หากผู้ใช้ลบรายชื่อติดต่อ ให้ใช้
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()
ดูตัวอย่างการเผยแพร่ทางลัดการแชร์ใน GitHub
ระบุภาพทางลัด
หากต้องการสร้างทางลัดการแชร์ คุณจะต้องเพิ่มรูปภาพผ่าน setIcon()
ทางลัดการแชร์อาจปรากฏในแพลตฟอร์มต่างๆ ของระบบและอาจมีการปรับรูปร่าง
นอกจากนี้ อุปกรณ์บางเครื่องที่ใช้ Android เวอร์ชัน 7, 8 หรือ 9 (API ระดับ 25, 26, 27 และ 28) อาจแสดงไอคอนบิตแมปเท่านั้นโดยไม่มีพื้นหลัง ซึ่งจะลดคอนทราสต์ลงอย่างมาก หากต้องการให้ทางลัดมีลักษณะตามที่ต้องการ
ให้บิตแมปแบบปรับได้โดยใช้ IconCompat.createWithAdaptiveBitmap()
ตรวจสอบว่าบิตแมปแบบปรับอัตโนมัติเป็นไปตามหลักเกณฑ์และขนาดเดียวกันที่ตั้งไว้สำหรับไอคอนแบบปรับอัตโนมัติ วิธีที่พบบ่อยที่สุดในการดำเนินการนี้คือการปรับขนาดบิตแมปสี่เหลี่ยมจัตุรัสที่ต้องการเป็น 72x72 dp และจัดกึ่งกลางภายใน Canvas แบบโปร่งใสขนาด 108x108 dp หากไอคอนมีส่วนที่โปร่งใส คุณต้องใส่สีพื้นหลังด้วย ไม่เช่นนั้นส่วนที่โปร่งใสจะปรากฏเป็นสีดำ
อย่าให้รูปภาพที่มาสก์เป็นรูปร่างที่เฉพาะเจาะจง ตัวอย่างเช่น ก่อน Android 10 (API ระดับ 29) การแสดงอวาตาร์ของผู้ใช้สำหรับการแชร์โดยตรงChooserTarget
ที่มาสก์เป็นวงกลมเป็นเรื่องปกติ ตอนนี้ Sharesheet ของ Android และแพลตฟอร์มอื่นๆ ของระบบใน Android 10 จะปรับรูปร่างและธีมของภาพทางลัด
วิธีที่แนะนำในการระบุทางลัดการแชร์ผ่าน ShortcutManagerCompat
จะปรับรูปร่างออบเจ็กต์ Direct Share 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 ซึ่ง ตรงกับเป้าหมายการแชร์ตัวอย่างข้างต้น แอปจะได้รับ เจตนาในการแชร์ต่อไปนี้
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.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 เพื่อระบุทั้ง Sharing Shortcuts และ ChooserTarget
หากต้องการใช้ไลบรารีความเข้ากันได้ของ AndroidX ไฟล์ Manifest ของแอป
ต้องมีชุดข้อมูลเมตา chooser-target-service และ intent-filters ดู 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 คืออะไร
เราได้เปิดตัว Direct Share ใน Android 6.0 (API ระดับ 23) เพื่อให้แอปสามารถระบุออบเจ็กต์ ChooserTarget
ผ่าน ChooserTargetService
ได้ ระบบจะดึงข้อมูลผลลัพธ์แบบโต้ตอบตามคำขอ ซึ่งทำให้เป้าหมายโหลดช้า
ใน Android 10 (API ระดับ 29) เราได้แทนที่ ChooserTargetService
Direct
Share API ด้วย Sharing Shortcuts API ใหม่ Sharing Shortcuts API ช่วยให้แอปเผยแพร่เป้าหมายการแชร์โดยตรงล่วงหน้าได้ แทนที่จะดึงผลลัพธ์
แบบรีแอกทีฟตามต้องการ ซึ่งช่วยเร่งกระบวนการดึงข้อมูลเป้าหมายของ Direct Share
เมื่อเตรียม ShareSheet ได้อย่างรวดเร็ว ChooserTargetService
การแชร์โดยตรง
จะยังคงทำงานได้ต่อไป แต่ระบบจะจัดอันดับเป้าหมายที่ระบุด้วยวิธีนี้ต่ำกว่าเป้าหมายที่ใช้ Sharing Shortcuts API
Android 11 (API ระดับ 30) เลิกใช้งานChooserTargetService
และ
Sharing Shortcuts API เป็นวิธีเดียวในการระบุเป้าหมายการแชร์โดยตรง
ทางลัดที่เผยแพร่สำหรับเป้าหมายการแชร์แตกต่างจากทางลัดของตัวเรียกใช้ อย่างไร (การใช้งานทางลัดทั่วไปเมื่อกดไอคอนแอปในตัวเรียกใช้นานๆ )
ทางลัดที่เผยแพร่เพื่อวัตถุประสงค์ "เป้าหมายการแชร์" จะเป็นทางลัดของ Launcher ด้วย และจะแสดงในเมนูเมื่อกดไอคอนแอปค้างไว้ ขีดจำกัดจำนวนทางลัดสูงสุดต่อกิจกรรมจะมีผลกับจำนวนทางลัดทั้งหมดที่แอปเผยแพร่ด้วย (เป้าหมายการแชร์และทางลัดของตัวเรียกใช้เดิมรวมกัน)
คำแนะนำเกี่ยวกับจำนวนทางลัดการแชร์ที่ควรเผยแพร่มีอะไรบ้าง
จำนวนทางลัดการแชร์จะถูกจำกัดไว้ที่ขีดจำกัดเดียวกันกับทางลัดแบบไดนามิกที่พร้อมใช้งานผ่าน getMaxShortcutCountPerActivity(android.content.Context)
ผู้ใช้สามารถเผยแพร่ทางลัดได้ตามจำนวนที่กำหนด แต่ต้องคำนึงว่าทางลัดที่แชร์จะปรากฏในตัวเรียกใช้แอปเมื่อกดค้างและในชีตแชร์ ตัวเรียกใช้แอปส่วนใหญ่จะแสดงทางลัดสูงสุด 4 หรือ 5 รายการในโหมดแนวตั้งเมื่อกดค้าง และ 8 รายการในโหมดแนวนอน ดูรายละเอียดเพิ่มเติมและคำแนะนำเกี่ยวกับการแชร์ทางลัดได้ที่คำถามที่พบบ่อยนี้