ทางลัดจะแสดงเนื้อหาบางประเภทแก่ผู้ใช้โดยช่วยให้ผู้ใช้เข้าถึงส่วนต่างๆ ของแอปได้อย่างรวดเร็ว
วิธีนำเสนอเนื้อหาด้วยทางลัดจะขึ้นอยู่กับ Use Case ของคุณ และบริบทของทางลัดนั้นขับเคลื่อนโดยแอปหรือผู้ใช้ แม้ว่าบริบทของทางลัดแบบคงที่จะไม่เปลี่ยนแปลงและบริบทของทางลัดแบบไดนามิกจะเปลี่ยนแปลงอยู่ตลอดเวลา แต่แอปของคุณจะขับเคลื่อนบริบทในทั้ง 2 กรณี ในกรณีที่ผู้ใช้เลือกวิธีที่แอปของคุณนำส่งเนื้อหาให้ตน เช่น ด้วยทางลัดที่ปักหมุดไว้ ผู้ใช้จะเป็นผู้กำหนดบริบท สถานการณ์ต่อไปนี้อธิบายกรณีการใช้งานบางส่วนสำหรับทางลัดแต่ละประเภท
- ทางลัดแบบคงที่เหมาะที่สุดสำหรับแอปที่ลิงก์ไปยังเนื้อหาโดยใช้โครงสร้างที่สอดคล้องกันตลอดอายุการโต้ตอบของผู้ใช้กับแอป เนื่องจาก Launcher ส่วนใหญ่แสดงทางลัดได้ครั้งละ 4 รายการเท่านั้น ทางลัดแบบคงที่จึงมีประโยชน์สำหรับการทำงานประจำในลักษณะที่สอดคล้องกัน เช่น หากผู้ใช้ต้องการดูปฏิทินหรืออีเมลในลักษณะที่เฉพาะเจาะจง
- ทางลัดแบบไดนามิกใช้สำหรับการดำเนินการในแอปที่ขึ้นอยู่กับบริบท ทางลัดที่ปรับตามบริบทจะปรับให้เหมาะกับการดำเนินการที่ผู้ใช้ทำในแอป เช่น หากคุณสร้างเกมที่ให้ผู้ใช้เริ่มจากระดับปัจจุบันเมื่อเปิดตัว คุณจะต้องอัปเดตทางลัดบ่อยๆ การใช้ทางลัดแบบไดนามิกช่วยให้คุณอัปเดตทางลัดได้ทุกครั้งที่ผู้ใช้ผ่านด่าน
- ทางลัดที่ปักหมุดไว้ใช้สำหรับการดำเนินการที่ผู้ใช้เป็นผู้ขับเคลื่อนโดยเฉพาะ เช่น ผู้ใช้อาจต้องการปักหมุดเว็บไซต์ที่เฉพาะเจาะจงไว้ใน Launcher ซึ่งเป็นประโยชน์เนื่องจากช่วยให้ผู้ใช้ดำเนินการที่กำหนดเองได้ เช่น การไปยังเว็บไซต์ในขั้นตอนเดียว ซึ่งรวดเร็วกว่าการใช้อินสแตนซ์เริ่มต้นของเบราว์เซอร์
สร้างทางลัดแบบคงที่
ทางลัดแบบคงที่จะมีลิงก์ไปยังการดำเนินการทั่วไปภายในแอป และการดำเนินการเหล่านี้ต้องสอดคล้องกันตลอดอายุการใช้งานของแอปเวอร์ชันปัจจุบัน ตัวเลือกที่ดีสำหรับทางลัดแบบคงที่ ได้แก่ การดูข้อความที่ส่ง การตั้งปลุก และการแสดงกิจกรรมการออกกำลังกายของผู้ใช้ในวันนั้น
หากต้องการสร้างทางลัดแบบคงที่ ให้ทำดังนี้
- ในไฟล์
AndroidManifest.xmlของแอป ให้ค้นหากิจกรรมที่มีการตั้งค่าตัวกรอง Intent เป็นการดำเนินการandroid.intent.action.MAINและหมวดหมู่android.intent.category.LAUNCHER เพิ่มองค์ประกอบ
<meta-data>ลงในกิจกรรมนี้ซึ่งอ้างอิงไฟล์ทรัพยากรที่มีการกำหนดทางลัดของแอปไว้ ดังนี้<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication"> <application ... > <activity android:name="Main"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" /> </activity> </application> </manifest>สร้างไฟล์ทรัพยากรใหม่ชื่อ
res/xml/shortcuts.xmlในไฟล์ทรัพยากรใหม่ ให้เพิ่มองค์ประกอบรูท
<shortcuts>ที่มีรายการองค์ประกอบ<shortcut>ในองค์ประกอบ<shortcut>แต่ละรายการ ให้ใส่ข้อมูลเกี่ยวกับทางลัดแบบคงที่ ซึ่งรวมถึงไอคอน ป้ายกำกับคำอธิบาย และ Intent ที่จะเปิดขึ้นภายในแอป ดังนี้<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <shortcut android:shortcutId="compose" android:enabled="true" android:icon="@drawable/compose_icon" android:shortcutShortLabel="@string/compose_shortcut_short_label1" android:shortcutLongLabel="@string/compose_shortcut_long_label1" android:shortcutDisabledMessage="@string/compose_disabled_message1"> <intent android:action="android.intent.action.VIEW" android:targetPackage="com.example.myapplication" android:targetClass="com.example.myapplication.Main" /> <!-- If your shortcut is associated with multiple intents, include them here. The last intent in the list determines what the user sees when they launch this shortcut. --> <categories android:name="android.shortcut.conversation" /> <capability-binding android:key="actions.intent.CREATE_MESSAGE" /> </shortcut> <!-- Specify more shortcuts here. --> </shortcuts>
ปรับแต่งค่าแอตทริบิวต์
รายการต่อไปนี้ประกอบด้วยคำอธิบายสำหรับแอตทริบิวต์ต่างๆ ภายในทางลัดแบบคงที่ ระบุค่าสำหรับ android:shortcutId และ android:shortcutShortLabel ส่วนค่าอื่นๆ ทั้งหมดจะใส่หรือไม่ใส่ก็ได้
android:shortcutIdสตริงลิเทอรัลที่แสดงทางลัดเมื่อออบเจ็กต์
ShortcutManagerดำเนินการกับทางลัดนั้นandroid:shortcutShortLabelวลีสั้นๆ ที่อธิบายวัตถุประสงค์ของทางลัด หากเป็นไปได้ ให้จำกัดคำอธิบายสั้นๆ นี้ไว้ที่ 10 อักขระ
ดูข้อมูลเพิ่มเติมได้ที่
setShortLabel()android:shortcutLongLabelวลีแบบขยายที่อธิบายวัตถุประสงค์ของทางลัด หากมีพื้นที่เพียงพอ Launcher จะแสดงค่านี้แทน
android:shortcutShortLabelหากเป็นไปได้ ให้จำกัดคำอธิบายแบบยาวนี้ไว้ที่ 25 อักขระดูข้อมูลเพิ่มเติมได้ที่
setLongLabel()android:shortcutDisabledMessageข้อความที่ปรากฏใน Launcher ที่รองรับเมื่อผู้ใช้พยายามเปิดทางลัดที่ปิดใช้ ข้อความต้องอธิบายให้ผู้ใช้ทราบถึงสาเหตุที่ปิดใช้ทางลัด ค่าของแอตทริบิวต์นี้จะไม่มีผลหาก
android:enabledเป็นtrueandroid:enabledกำหนดว่าผู้ใช้จะโต้ตอบกับทางลัดจาก Launcher ที่รองรับได้หรือไม่ ค่าเริ่มต้นของ
android:enabledคือtrueหากตั้งค่าเป็นfalseให้ตั้งค่าandroid:shortcutDisabledMessageที่อธิบายเหตุผลที่คุณปิดใช้แป้นพิมพ์ลัด หากคิดว่าไม่จำเป็นต้องแสดงข้อความดังกล่าว ให้นำทางลัดออกจากไฟล์ XML ทั้งหมดandroid:iconบิตแมปหรือไอคอนแบบปรับอัตโนมัติที่ Launcher ใช้เมื่อแสดงทางลัดต่อผู้ใช้ ค่านี้อาจเป็นเส้นทางไปยังรูปภาพหรือไฟล์ทรัพยากรที่มีรูปภาพ ใช้ไอคอนแบบปรับอัตโนมัติเมื่อเป็นไปได้เพื่อปรับปรุงประสิทธิภาพและความสอดคล้อง
กำหนดค่าองค์ประกอบภายใน
ไฟล์ XML ที่แสดงรายการทางลัดแบบคงที่ของแอปจะรองรับองค์ประกอบต่อไปนี้ภายในองค์ประกอบ <shortcut> แต่ละรายการ คุณต้องรวมองค์ประกอบภายใน intent สำหรับทางลัดแบบคงที่แต่ละรายการที่คุณกำหนด
intentการดำเนินการที่ระบบจะเปิดขึ้นเมื่อผู้ใช้เลือกทางลัด Intent นี้ต้องระบุค่าสำหรับแอตทริบิวต์
android:actionคุณสามารถระบุ Intent หลายรายการสำหรับทางลัดเดียวได้ ดูรายละเอียดได้ที่จัดการ Intent และกิจกรรมหลายรายการ, ตั้งค่า Intent และข้อมูลอ้างอิงคลาส
TaskStackBuildercategoriesจัดกลุ่มประเภทการดำเนินการที่ทางลัดของแอปทำ เช่น การสร้างข้อความแชทใหม่
ดูรายการหมวดหมู่ทางลัดที่รองรับได้ที่ข้อมูลอ้างอิงคลาส
ShortcutInfocapability-bindingประกาศความสามารถที่ลิงก์กับทางลัด
ในตัวอย่างก่อนหน้านี้ ทางลัดจะลิงก์กับความสามารถที่ประกาศไว้สำหรับ
CREATE_MESSAGEซึ่งเป็น Intent ในตัวของ App Actions การเชื่อมโยงความสามารถนี้ช่วยให้ผู้ใช้ใช้คำสั่งเสียงกับ Google Assistant เพื่อเรียกใช้ทางลัดได้
สร้างทางลัดแบบไดนามิก
ทางลัดแบบไดนามิกมีลิงก์ไปยังการดำเนินการที่เจาะจงและคำนึงถึงบริบทภายในแอปของคุณ การดำเนินการเหล่านี้อาจเปลี่ยนแปลงระหว่างการใช้งานแอปและขณะที่แอปทำงานอยู่ ตัวอย่างการใช้งานทางลัดแบบไดนามิกที่ดี ได้แก่ การโทรหาบุคคลที่เฉพาะเจาะจง การนำทางไปยังสถานที่ที่เฉพาะเจาะจง และการโหลดเกมจากจุดบันทึกล่าสุดของผู้ใช้ นอกจากนี้ คุณยังใช้ทางลัดแบบไดนามิกเพื่อเปิดการสนทนาได้ด้วย
ไลบรารี Jetpack ShortcutManagerCompat เป็นตัวช่วยสำหรับ API ShortcutManager ซึ่งช่วยให้คุณจัดการทางลัดแบบไดนามิกในแอปได้ การใช้ไลบรารี ShortcutManagerCompat จะช่วยลดโค้ด Boilerplate และช่วยให้มั่นใจว่าทางลัดจะทำงานได้อย่างสอดคล้องกันใน Android เวอร์ชันต่างๆ นอกจากนี้ ไลบรารีนี้ยังจำเป็นสำหรับการพุชทางลัดแบบไดนามิกเพื่อให้มีสิทธิ์ปรากฏบนแพลตฟอร์มต่างๆ ของ Google เช่น Assistant ด้วยไลบรารีการผสานรวมทางลัดของ Google
ShortcutManagerCompat API ช่วยให้แอปของคุณดำเนินการต่อไปนี้กับทางลัดแบบไดนามิกได้
- พุชและอัปเดต: ใช้
pushDynamicShortcut()เพื่อเผยแพร่และอัปเดตทางลัดแบบไดนามิก หากมีทางลัดแบบไดนามิกหรือทางลัดที่ปักหมุดไว้ซึ่งมีรหัสเดียวกันอยู่แล้ว ทางลัดที่เปลี่ยนแปลงได้แต่ละรายการจะอัปเดต - นำออก: นำชุดทางลัดแบบไดนามิกออกโดยใช้
removeDynamicShortcuts()นำทางลัดแบบไดนามิกทั้งหมดออกโดยใช้removeAllDynamicShortcuts()
ดูข้อมูลเพิ่มเติมเกี่ยวกับการดำเนินการกับทางลัดได้ที่หัวข้อจัดการทางลัดและข้อมูลอ้างอิง ShortcutManagerCompat
ต่อไปนี้เป็นตัวอย่างการสร้างทางลัดแบบไดนามิกและเชื่อมโยงกับแอปของคุณ
val shortcut = ShortcutInfoCompat.Builder(context, "id1") .setShortLabel("Website") .setLongLabel("Open the website") .setIcon(IconCompat.createWithResource(context, R.drawable.icon_website)) .setIntent( Intent( Intent.ACTION_VIEW, Uri.parse("https://www.mysite.example.com/") ) ) .build() ShortcutManagerCompat.pushDynamicShortcut(context, shortcut)
เพิ่มไลบรารีการผสานรวมทางลัดของ Google
ไลบรารีการผสานรวมทางลัดของ Google เป็นไลบรารี Jetpack ที่ไม่บังคับ ซึ่งช่วยให้คุณพุชทางลัดแบบไดนามิกที่แสดงบนแพลตฟอร์ม Android เช่น Launcher และแพลตฟอร์มของ Google ได้ การใช้ไลบรารีนี้จะช่วยให้ผู้ใช้ค้นพบทางลัดเพื่อเข้าถึงเนื้อหาที่เฉพาะเจาะจงหรือเล่นการดำเนินการซ้ำในแอปได้อย่างรวดเร็ว
ทางลัดแบบไดนามิกที่พุชด้วยไลบรารีนี้ไม่อยู่ภายใต้ขีดจำกัดทางลัดที่บังคับใช้ตามอุปกรณ์แต่ละเครื่อง ซึ่งจะช่วยให้แอปพุชทางลัดได้ทุกครั้งที่ผู้ใช้ดำเนินการที่เกี่ยวข้องในแอปจนเสร็จสมบูรณ์ การพุชทางลัดบ่อยๆ ด้วยวิธีนี้จะช่วยให้ Google เข้าใจรูปแบบการใช้งานของผู้ใช้และแนะนำทางลัดที่เกี่ยวข้องตามบริบทให้แก่ผู้ใช้ได้
ตัวอย่างเช่น Assistant สามารถเรียนรู้จากทางลัดที่พุชจากแอปติดตามการออกกำลังกายว่าผู้ใช้มักจะวิ่งทุกเช้า และจะแนะนำทางลัด "เริ่มวิ่ง" ในเชิงรุกเมื่อผู้ใช้หยิบโทรศัพท์ขึ้นมาในตอนเช้า
ไลบรารีการผสานรวมทางลัดของ Google ไม่มีฟังก์ชันการทำงานที่กำหนดแอดเดรสได้ด้วยตัวเอง การเพิ่มไลบรารีนี้ลงในแอปช่วยให้แพลตฟอร์มต่างๆ ของ Google รับทางลัดที่แอปพุชโดยใช้ ShortcutManagerCompat ได้
หากต้องการใช้ไลบรารีนี้ในแอป ให้เพิ่มทรัพยากร Dependency สำหรับไลบรารีการผสานรวมทางลัดของ Google และ ShortcutManagerCompat ลงในไฟล์ app/build.gradle หรือ app/build.gradle.kts ดังนี้
Kotlin
dependencies {
implementation("androidx.core:core:1.6.0")
implementation("androidx.core:core-google-shortcuts:1.0.0")
}
ดึงดูด
dependencies {
implementation "androidx.core:core:1.6.0"
implementation 'androidx.core:core-google-shortcuts:1.0.0'
}
เมื่อเพิ่มทรัพยากร Dependency ของไลบรารีลงในโปรเจ็กต์ Android แล้ว แอปของคุณจะใช้เมธอด pushDynamicShortcut() จาก ShortcutManagerCompat เพื่อพุชทางลัดแบบไดนามิกที่มีสิทธิ์แสดงใน Launcher และแพลตฟอร์มต่างๆ ของ Google ที่เข้าร่วมได้
สร้างทางลัดที่ปักหมุดไว้
ใน Android 8.0 (ระดับ API 26) ขึ้นไป คุณสามารถสร้างทางลัดที่ปักหมุดไว้ได้ ทางลัดที่ปักหมุดไว้จะปรากฏใน Launcher ที่รองรับเป็นไอคอนแยกต่างหาก ซึ่งต่างจากทางลัดแบบคงที่และแบบไดนามิก รูปที่ 1 แสดงความแตกต่างระหว่างทางลัด 2 ประเภทนี้
หากต้องการปักหมุดทางลัดไปยัง Launcher ที่รองรับโดยใช้แอป ให้ทำตามขั้นตอนต่อไปนี้
- ใช้
isRequestPinShortcutSupported()เพื่อยืนยันว่า Launcher เริ่มต้นของอุปกรณ์รองรับการปักหมุดแอปทางลัด สร้างออบเจ็กต์
ShortcutInfoCompatที่มีรหัส Intent และป้ายกำกับสั้นๆ สำหรับทางลัด หากมีทางลัดอยู่แล้ว ให้ใช้รหัสของทางลัดที่มีอยู่ ระบบจะค้นหาและปักหมุดข้อมูลอื่นๆ ทั้งหมดที่เกี่ยวข้องกับทางลัดโดยอัตโนมัติปักหมุดทางลัดไปยัง Launcher ของอุปกรณ์โดยเรียกใช้
requestPinShortcut()ในระหว่างกระบวนการนี้ คุณสามารถส่งออบเจ็กต์PendingIntentซึ่งจะแจ้งเตือนแอปของคุณเมื่อปักหมุดทางลัดสำเร็จเท่านั้นหลังจากปักหมุดทางลัดแล้ว แอปจะอัปเดตเนื้อหาได้โดยใช้เมธอด
updateShortcuts()โปรดอ่านข้อมูลเพิ่มเติมที่หัวข้ออัปเดตทางลัด
ข้อมูลโค้ดต่อไปนี้แสดงวิธีสร้างทางลัดที่ปักหมุดไว้
if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)) { // Enable the existing shortcut with the ID "my-shortcut". val pinShortcutInfo = ShortcutInfoCompat.Builder(context, "my-shortcut") .setShortLabel("Website") .setIntent( Intent( Intent.ACTION_VIEW, Uri.parse("https://www.mysite.example.com/") ) ) .build() // Create the PendingIntent object only if your app needs to be notified // that the user let the shortcut be pinned. If the pinning operation fails, // your app isn't notified. Assume here that the app implements a method // called createShortcutResultIntent() that returns a broadcast intent. val pinnedShortcutCallbackIntent = ShortcutManagerCompat.createShortcutResultIntent(context, pinShortcutInfo) // Configure the intent so that your app's broadcast receiver gets the // callback successfully. For details, see PendingIntent.getBroadcast(). val successCallback = PendingIntent.getBroadcast( context, /* request code */ 0, pinnedShortcutCallbackIntent, /* flags */ PendingIntent.FLAG_IMMUTABLE ) ShortcutManagerCompat.requestPinShortcut( context, pinShortcutInfo, successCallback.intentSender ) }
สร้างกิจกรรมทางลัดที่กำหนดเอง
นอกจากนี้ คุณยังสร้างกิจกรรมเฉพาะที่ช่วยให้ผู้ใช้สร้างทางลัดได้ พร้อมด้วยตัวเลือกที่กำหนดเองและปุ่มยืนยัน รูปที่ 2 แสดงตัวอย่างกิจกรรมประเภทนี้ในแอป Gmail
ในไฟล์ Manifest ของแอป ให้เพิ่ม ACTION_CREATE_SHORTCUT ลงในองค์ประกอบ <intent-filter> ของกิจกรรม การประกาศนี้จะตั้งค่าลักษณะการทำงานต่อไปนี้เมื่อผู้ใช้พยายามสร้างทางลัด
- ระบบจะเริ่มกิจกรรมเฉพาะทางของแอป
- ผู้ใช้ตั้งค่าตัวเลือกสำหรับทางลัด
- ผู้ใช้เลือกปุ่มยืนยัน
- แอปของคุณสร้างทางลัดโดยใช้เมธอด
createShortcutResultIntent()วิธีนี้จะแสดงผลIntentซึ่งแอปของคุณจะส่งต่อกลับไปยังกิจกรรมที่ดำเนินการก่อนหน้านี้โดยใช้setResult() - แอปของคุณเรียกใช้
finish()ในกิจกรรมที่ใช้สร้างทางลัดที่กำหนดเอง
ในทำนองเดียวกัน แอปของคุณสามารถแจ้งให้ผู้ใช้เพิ่มทางลัดที่ปักหมุดไว้ในหน้าจอหลักหลังจากการติดตั้งหรือเมื่อเปิดแอปเป็นครั้งแรก วิธีนี้มีประสิทธิภาพเนื่องจากช่วยให้ผู้ใช้สร้างทางลัดเป็นส่วนหนึ่งของเวิร์กโฟลว์ปกติได้
ทดสอบทางลัด
หากต้องการทดสอบทางลัดของแอป ให้ติดตั้งแอปในอุปกรณ์ที่มี Launcher ที่รองรับทางลัด จากนั้นให้ดำเนินการต่อไปนี้
- แตะไอคอน Launcher ของแอปค้างไว้เพื่อดูทางลัดที่คุณกำหนดไว้สำหรับแอป
- ลากทางลัดเพื่อปักหมุดไว้ใน Launcher ของอุปกรณ์