ทางลัดจะแสดงเนื้อหาบางประเภทต่อผู้ใช้โดยช่วยให้ผู้ใช้เข้าถึงส่วนต่างๆ ของแอปได้อย่างรวดเร็ว
วิธีส่งเนื้อหาด้วยทางลัดจะขึ้นอยู่กับกรณีการใช้งานของคุณและบริบทของทางลัดนั้นๆ ว่าเป็นแบบที่แอปกำหนดหรือผู้ใช้กำหนด แม้ว่าบริบทของทางลัดแบบคงที่จะไม่เปลี่ยนแปลงและบริบทของทางลัดแบบไดนามิกจะเปลี่ยนแปลงอยู่ตลอดเวลา แต่แอปของคุณจะขับเคลื่อนบริบทในทั้ง 2 กรณี ในกรณีที่ผู้ใช้เลือกวิธีที่แอปของคุณ แสดงเนื้อหาต่อผู้ใช้ เช่น ทางลัดที่ปักหมุดไว้ บริบทจะกำหนด โดยผู้ใช้ สถานการณ์ต่อไปนี้อธิบายกรณีการใช้งานบางส่วนสำหรับทางลัดแต่ละประเภท
- ทางลัดแบบคงที่เหมาะที่สุดสำหรับแอปที่ลิงก์ไปยังเนื้อหาโดยใช้ โครงสร้างที่สอดคล้องกันตลอดอายุการใช้งานของการโต้ตอบของผู้ใช้กับ แอป เนื่องจากตัวเรียกใช้ส่วนใหญ่แสดงทางลัดเพียง 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วลีแบบขยายที่อธิบายวัตถุประสงค์ของทางลัด หากมีพื้นที่เพียงพอ ตัวเรียกใช้จะแสดงค่านี้แทน
android:shortcutShortLabelหากเป็นไปได้ ให้จำกัดคำอธิบายแบบยาวนี้ ไม่เกิน 25 อักขระดูข้อมูลเพิ่มเติมได้ที่
setLongLabel()android:shortcutDisabledMessageข้อความที่ปรากฏในตัวเรียกใช้ที่รองรับ เมื่อผู้ใช้พยายามเปิดใช้ทางลัดที่ปิดใช้ ข้อความ ต้องอธิบายให้ผู้ใช้ทราบสาเหตุที่ปิดใช้ทางลัด ค่าของแอตทริบิวต์นี้จะไม่มีผลหาก
android:enabledเป็นtrueandroid:enabledกำหนดว่าผู้ใช้จะโต้ตอบกับทางลัดได้หรือไม่ จาก Launcher ที่รองรับ ค่าเริ่มต้นของ
android:enabledคือtrueหากตั้งค่าเป็นfalseให้ตั้งค่าandroid:shortcutDisabledMessageที่ อธิบายเหตุผลที่คุณปิดใช้ทางลัด หากคุณไม่คิดว่าจำเป็นต้อง ระบุข้อความดังกล่าว ให้นำทางลัดออกจากไฟล์ XML ทั้งหมดandroid:iconบิตแมปหรือไอคอนแบบปรับอัตโนมัติที่ตัวเรียกใช้ใช้เมื่อแสดงทางลัดต่อผู้ใช้ ค่านี้อาจเป็นเส้นทางไปยังรูปภาพหรือไฟล์ทรัพยากรที่มีรูปภาพ ใช้ไอคอนแบบปรับได้ ทุกครั้งที่เป็นไปได้เพื่อปรับปรุงประสิทธิภาพและความสอดคล้อง
กำหนดค่าองค์ประกอบด้านใน
ไฟล์ XML ที่แสดงทางลัดแบบคงที่ของแอปจะรองรับองค์ประกอบต่อไปนี้
ภายในองค์ประกอบ <shortcut> แต่ละรายการ คุณต้องระบุองค์ประกอบ intent
inner สำหรับทางลัดแบบคงที่แต่ละรายการที่คุณกำหนด
intentการดำเนินการที่ระบบจะเปิดเมื่อผู้ใช้เลือกทางลัด ความตั้งใจนี้ต้องระบุค่าสำหรับแอตทริบิวต์
android:actionคุณระบุ Intent หลายรายการสำหรับทางลัดเดียวได้ ดูรายละเอียดได้ที่จัดการหลายเจตนาและกิจกรรม ตั้งค่าเจตนา และข้อมูลอ้างอิงของคลาส
TaskStackBuildercategoriesจัดกลุ่มประเภทการดำเนินการที่ทางลัดของแอป ดำเนินการ เช่น การสร้างข้อความแชทใหม่
ดูรายการหมวดหมู่ทางลัดที่รองรับได้ใน
ShortcutInfoการอ้างอิงคลาสcapability-bindingประกาศความสามารถที่ลิงก์กับทางลัด
ในตัวอย่างก่อนหน้า ทางลัดจะลิงก์กับความสามารถที่ประกาศไว้สำหรับ
CREATE_MESSAGEซึ่งเป็น Intent ในตัวของ การดำเนินการของแอป การเชื่อมโยงความสามารถนี้ช่วยให้ผู้ใช้ใช้คำสั่งเสียงกับ Google Assistant เพื่อเรียกใช้ทางลัดได้
สร้างทางลัดแบบไดนามิก
ทางลัดแบบไดนามิกจะแสดงลิงก์ไปยังการดำเนินการที่เฉพาะเจาะจงและอิงตามบริบทภายใน แอปของคุณ การดำเนินการเหล่านี้อาจเปลี่ยนแปลงได้ระหว่างการใช้งานแอปและขณะที่แอป กำลังทำงาน ตัวอย่างการใช้ทางลัดแบบไดนามิกที่ดี ได้แก่ การโทรหาบุคคลที่เฉพาะเจาะจง การไปยังตำแหน่งที่เฉพาะเจาะจง และการโหลดเกมจากจุดบันทึกสุดท้ายของผู้ใช้ นอกจากนี้ คุณยังใช้ทางลัดแบบไดนามิกเพื่อเปิดการสนทนาได้ด้วย
ไลบรารี ShortcutManagerCompat Jetpack เป็นตัวช่วยสำหรับ 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 ได้ เช่น ตัวเรียกใช้ และแพลตฟอร์มของ Google การใช้คลังนี้จะช่วยให้ผู้ใช้ค้นพบ ทางลัดเพื่อเข้าถึงเนื้อหาที่เฉพาะเจาะจงหรือเล่นซ้ำการดำเนินการในแอปได้อย่างรวดเร็ว
ทางลัดแบบไดนามิกที่พุชด้วยไลบรารีนี้จะไม่ขึ้นอยู่กับขีดจำกัดของทางลัดที่บังคับใช้ในแต่ละอุปกรณ์ ซึ่งจะช่วยให้แอปของคุณสามารถพุชทางลัดทุกครั้งที่ผู้ใช้ดำเนินการที่เชื่อมโยงในแอปของคุณเสร็จสมบูรณ์ การพุชทางลัดบ่อยๆ ด้วยวิธีนี้จะช่วยให้ Google เข้าใจรูปแบบการใช้งานของผู้ใช้และแนะนำทางลัดที่เกี่ยวข้องตามบริบทให้แก่ผู้ใช้ได้
ตัวอย่างเช่น Assistant สามารถเรียนรู้จากทางลัดที่ส่งมาจากแอปติดตามการออกกำลังกายว่าโดยปกติแล้วผู้ใช้จะวิ่งทุกเช้า และแนะนำทางลัด "เริ่มวิ่ง" อย่างรวดเร็วเมื่อผู้ใช้หยิบโทรศัพท์ขึ้นมาในตอนเช้า
ไลบรารีการผสานรวมทางลัดของ Google ไม่ได้มีฟังก์ชันที่สามารถระบุที่อยู่ได้
ด้วยตัวมันเอง การเพิ่มไลบรารีนี้ลงในแอปจะช่วยให้แพลตฟอร์มต่างๆ ของ Google รับรู้
ทางลัดที่แอปของคุณพุชโดยใช้ ShortcutManagerCompat
หากต้องการใช้ไลบรารีนี้ในแอป ให้เพิ่มทรัพยากร Dependency สำหรับไลบรารีการผสานรวม Google Shortcuts
และ 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) ขึ้นไป คุณจะสร้างทางลัดที่ปักหมุดได้ ทางลัดที่ปักหมุดจะปรากฏในตัวเรียกใช้ที่รองรับเป็นไอคอนแยกต่างหาก ซึ่งต่างจากทางลัดแบบคงที่และแบบไดนามิก รูปที่ 1 แสดงความแตกต่างระหว่างทางลัด 2 ประเภทนี้
หากต้องการปักหมุดทางลัดไปยัง Launcher ที่รองรับโดยใช้แอป ให้ทำตามขั้นตอนต่อไปนี้
- ใช้
isRequestPinShortcutSupported()เพื่อยืนยันว่า Launcher เริ่มต้นของอุปกรณ์รองรับการปักหมุดทางลัดในแอป สร้างออบเจ็กต์
ShortcutInfoCompatที่มีรหัส Intent และป้ายกำกับสั้นๆ สำหรับทางลัด หากมีทางลัดอยู่แล้ว ให้ใช้รหัสของ ทางลัดที่มีอยู่ ระบบจะค้นหาและปักหมุดข้อมูลอื่นๆ ทั้งหมด ที่เกี่ยวข้องกับทางลัดโดยอัตโนมัติปักหมุดทางลัดไปยังตัวเรียกใช้ของอุปกรณ์โดยเรียกใช้
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 ของอุปกรณ์