ทางลัดจะแสดงเนื้อหาประเภทที่เฉพาะเจาะจงแก่ผู้ใช้ด้วยการช่วยผู้ใช้ เข้าถึงส่วนต่างๆ ของแอปได้อย่างรวดเร็ว
วิธีแสดงเนื้อหาด้วยทางลัดจะขึ้นอยู่กับกรณีการใช้งานและ บริบทของทางลัดขึ้นอยู่กับแอปหรือผู้ใช้ แม้ว่าสถิติ บริบทของทางลัดไม่เปลี่ยนแปลง และบริบทของทางลัดแบบไดนามิกยังคงเดิม การเปลี่ยนแปลง แอปของคุณจะขับเคลื่อนบริบทในทั้ง 2 กรณี ในกรณีที่ผู้ใช้ เลือกวิธีแสดงเนื้อหาต่อผู้ใช้ เช่น ทางลัดที่ปักหมุดไว้ ผู้ใช้เป็นผู้กำหนดบริบท สถานการณ์ต่อไปนี้อธิบายการใช้งานบางส่วน เคสของแป้นพิมพ์ลัดแต่ละประเภทมีดังนี้
- คงที่ แป้นพิมพ์ลัด เหมาะสำหรับแอปที่ลิงก์กับเนื้อหาโดยใช้ ตลอดอายุการใช้งานของผู้ใช้กับ เพราะ Launcher ส่วนใหญ่ แสดงเฉพาะสี่ ทางลัดพร้อมกัน ทางลัดแบบคงที่มีประโยชน์ในการดำเนินการกิจวัตร งานในลักษณะที่สอดคล้องกัน เช่น หากผู้ใช้ต้องการดูปฏิทินหรือ อีเมล โดยเฉพาะ
- ไดนามิก แป้นพิมพ์ลัด ใช้สำหรับการดำเนินการในแอปที่ คำนึงถึงบริบท แป้นพิมพ์ลัดที่คำนึงถึงบริบทได้รับการปรับแต่งให้เหมาะกับ สิ่งที่ผู้ใช้ทำในแอป เช่น ถ้าคุณสร้างเกมที่ ผู้ใช้เริ่มต้นจากระดับปัจจุบันเมื่อเปิดตัว คุณจะต้องอัปเดต เป็นประจำ การใช้ทางลัดแบบไดนามิกช่วยให้คุณอัปเดตทางลัดได้ ทุกครั้งที่ผู้ใช้ล้างระดับ
- ปักหมุดไว้ แป้นพิมพ์ลัดใช้สำหรับการดำเนินการที่เฉพาะเจาะจงโดยผู้ใช้ ตัวอย่างเช่น ผู้ใช้อาจต้องการตรึงบางเว็บไซต์ไว้ที่ 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.ComposeActivity" /> <!-- 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
-
ข้อความที่ปรากฏใน Launcher ที่รองรับเมื่อผู้ใช้พยายาม เปิดทางลัดที่ปิดใช้งาน ข้อความต้องอธิบายให้ผู้ใช้ทราบว่า ปิดใช้แป้นพิมพ์ลัดอยู่ ค่าของแอตทริบิวต์นี้จะไม่มีผล
android:enabled
คือtrue
-
android:enabled
-
กำหนดว่าผู้ใช้จะโต้ตอบกับทางลัดจากที่รองรับหรือไม่ Launcher ค่าเริ่มต้นของ
android:enabled
คือtrue
หากตั้งค่าเป็นfalse
ให้ตั้งค่าandroid:shortcutDisabledMessage
ที่อธิบายเหตุผลที่คุณ ปิดใช้ทางลัด หากคุณคิดว่าไม่จำเป็นต้องส่งข้อความดังกล่าว นำทางลัดออกจากไฟล์ XML ทั้งหมด -
android:icon
-
บิตแมปหรือ ปรับเปลี่ยนได้ ที่ Launcher ใช้เมื่อแสดงทางลัดแก่ผู้ใช้ ช่วงเวลานี้ ค่าอาจเป็นเส้นทางไปยังรูปภาพหรือไฟล์ทรัพยากรที่มีส่วน รูปภาพ ใช้ไอคอนแบบปรับอัตโนมัติเมื่อทำได้เพื่อปรับปรุงประสิทธิภาพและ ความสม่ำเสมอ
กำหนดค่าองค์ประกอบภายใน
ไฟล์ XML ที่แสดงทางลัดแบบคงที่ของแอปจะรองรับรายการต่อไปนี้
ภายในเอลิเมนต์ <shortcut>
แต่ละรายการ คุณ
ต้องมีองค์ประกอบภายใน intent
แต่ละรายการ
แบบคงที่ตามที่คุณกำหนด
-
intent
-
การดำเนินการที่ระบบจะเปิดเมื่อผู้ใช้เลือกทางลัด Intent นี้ต้องระบุค่าสำหรับ
android:action
คุณสามารถระบุ Intent ได้หลายรายการสำหรับทางลัดเดียว โปรดดู จัดการ ความตั้งใจและกิจกรรมที่หลากหลาย ตั้งค่า Intent และ
TaskStackBuilder
เพื่อดูรายละเอียด -
categories
-
ให้การจัดกลุ่มประเภทการดำเนินการที่ทางลัดของแอปของคุณ เช่น การสร้างข้อความแชทใหม่
ดูรายการหมวดหมู่ทางลัดที่รองรับได้ที่
ShortcutInfo
ข้อมูลอ้างอิงของชั้นเรียน -
capability-binding
-
ประกาศความสามารถ ลิงก์กับทางลัดแล้ว
ในตัวอย่างก่อนหน้านี้ ทางลัดจะลิงก์กับความสามารถที่ประกาศไว้ สำหรับ
CREATE_MESSAGE
ซึ่งเป็นการดำเนินการของแอป Intent ในตัว การเชื่อมโยงความสามารถนี้ทำให้ผู้ใช้สามารถใช้คำสั่งเสียงกับ Google Assistant เพื่อเรียกทางลัด
สร้างทางลัดแบบไดนามิก
ทางลัดแบบไดนามิกให้ลิงก์ไปยังการดำเนินการที่เฉพาะเจาะจงและคำนึงถึงบริบทภายใน แอปของคุณ การดําเนินการเหล่านี้อาจเปลี่ยนแปลงระหว่างการใช้งานแอปกับในขณะที่แอป กำลังทำงาน การใช้งานที่ดีสำหรับทางลัดแบบไดนามิก ได้แก่ การเรียกบุคคลที่เจาะจง นำทางไปยังตำแหน่งที่เจาะจง และโหลดเกมจากการบันทึกครั้งล่าสุดของผู้ใช้ คะแนน นอกจากนี้ คุณยังใช้แป้นพิมพ์ลัดแบบไดนามิกเพื่อเปิดการสนทนาได้ด้วย
ShortcutManagerCompat
ไลบรารี Jetpack เป็นผู้ช่วยเหลือ
วันที่ ShortcutManager
API ซึ่งช่วยให้คุณจัดการทางลัดแบบไดนามิกในแอปได้ การใช้
ไลบรารี ShortcutManagerCompat
ช่วยลดโค้ดสำเร็จรูปและช่วย
ตรวจสอบว่าแป้นพิมพ์ลัดทำงานอย่างสอดคล้องกันใน Android เวอร์ชันต่างๆ ช่วงเวลานี้
ยังจำเป็นต่อการพุชทางลัดแบบไดนามิกเพื่อให้แป้นพิมพ์ลัดเหล่านั้นมีสิทธิ์
ปรากฏบนแพลตฟอร์มต่างๆ ของ Google เช่น Assistant ด้วย
ไลบรารีการผสานรวมทางลัดของ Google
ShortcutManagerCompat
API ช่วยให้แอปของคุณทำสิ่งต่อไปนี้ได้
การดำเนินการที่มีทางลัดแบบไดนามิก
-
พุชและอัปเดต: ใช้
pushDynamicShortcut()
เพื่อเผยแพร่และอัปเดตทางลัดแบบไดนามิก หากมีแบบไดนามิกอยู่แล้ว หรือแป้นพิมพ์ลัดที่ปักหมุดไว้ด้วยรหัสเดียวกัน แป้นพิมพ์ลัดที่เปลี่ยนแปลงได้แต่ละรายการจะอัปเดต -
นำออก: นำชุดทางลัดแบบไดนามิกออกโดยใช้
removeDynamicShortcuts()
นำทางลัดแบบไดนามิกทั้งหมดออกโดยใช้removeAllDynamicShortcuts()
ดูข้อมูลเพิ่มเติมเกี่ยวกับการดำเนินการกับทางลัดได้ที่
จัดการทางลัด
และ
ShortcutManagerCompat
ข้อมูลอ้างอิง
ต่อไปนี้เป็นตัวอย่างของการสร้างทางลัดแบบไดนามิกและเชื่อมโยงกับ แอป:
Kotlin
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)
Java
ShortcutInfoCompat shortcut = new ShortcutInfoCompat.Builder(context, "id1") .setShortLabel("Website") .setLongLabel("Open the website") .setIcon(IconCompat.createWithResource(context, R.drawable.icon_website)) .setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.mysite.example.com/"))) .build(); ShortcutManagerCompat.pushDynamicShortcut(context, shortcut);
เพิ่มไลบรารีการผสานรวมทางลัดของ Google
ไลบรารีการผสานรวมทางลัดของ Google เป็นไลบรารี Jetpack ที่ไม่บังคับ ทั้งนี้ จะช่วยให้คุณพุชทางลัดแบบไดนามิกที่แสดงบนแพลตฟอร์มต่างๆ ของ Android ได้ เช่น เป็น Launcher และแพลตฟอร์ม Google เช่น Assistant การใช้ไลบรารีนี้ ช่วยให้ผู้ใช้ค้นพบทางลัดเพื่อเข้าถึงเนื้อหาที่เฉพาะเจาะจงหรือเล่นซ้ำได้อย่างรวดเร็ว การกระทำในแอปของคุณ
เช่น แอปรับส่งข้อความอาจพุชทางลัดแบบไดนามิกสําหรับรายชื่อติดต่อ ชื่อ "อเล็กซ์" หลังจากที่ผู้ใช้ส่งข้อความถึงบุคคลดังกล่าว หลังทางลัดแบบไดนามิก แบบพุช หากผู้ใช้ถาม Assistant ว่า"Ok Google ส่งข้อความถึงธำรง ExampleApp," Assistant จะเปิด ExampleApp และกำหนดค่าโดยอัตโนมัติ เพื่อส่งข้อความถึงธำรง
แป้นพิมพ์ลัดแบบไดนามิกที่พุชด้วยไลบรารีนี้ไม่ได้เป็นไปตาม ขีดจำกัดของแป้นพิมพ์ลัด บังคับใช้เป็นรายอุปกรณ์ ซึ่งช่วยให้แอปพุชทางลัดทุกครั้งที่ ผู้ใช้ดำเนินการที่เกี่ยวข้องในแอปจนเสร็จสมบูรณ์ พุชทางลัดที่ใช้บ่อย ช่วยให้ Google เข้าใจรูปแบบการใช้งานของผู้ใช้และแนะนำตามบริบทได้ ทางลัดไปยังเนื้อหาเหล่านั้น
ตัวอย่างเช่น Assistant สามารถเรียนรู้จากทางลัดที่พุชจาก แอปติดตามการออกกำลังกายที่ผู้ใช้มักเรียกใช้ทุกเช้าและเชิงรุก แนะนำ "เริ่มวิ่ง" เมื่อผู้ใช้หยิบโทรศัพท์ขึ้นมาใน ตอนเช้า
ไลบรารีการผสานรวมทางลัดของ Google ไม่มีที่อยู่ได้
ของฟังก์ชันนั้นๆ การเพิ่มไลบรารีนี้ลงในแอปจะช่วยให้แพลตฟอร์มต่างๆ ของ Google ใช้
ในทางลัดที่แอปของคุณพุชโดยใช้ ShortcutManagerCompat
หากต้องการใช้ไลบรารีนี้ในแอป ให้ทำตามขั้นตอนต่อไปนี้
-
อัปเดตไฟล์
gradle.properties
เพื่อให้การสนับสนุน ไลบรารี AndroidX:android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true
-
ใน
app/build.gradle
ให้เพิ่มทรัพยากร Dependency สำหรับพารามิเตอร์ ไลบรารีการผสานรวมทางลัดและShortcutManagerCompat
: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 แสดงความแตกต่างระหว่างสองประเภทนี้ ประเภทแป้นพิมพ์ลัด
หากต้องการปักหมุดทางลัดไปยัง Launcher ที่รองรับโดยใช้แอป ให้ทำตามขั้นตอนต่อไปนี้ ขั้นตอนต่อไปนี้
-
ใช้
isRequestPinShortcutSupported()
เพื่อยืนยันว่า Launcher เริ่มต้นของอุปกรณ์รองรับการปักหมุดในแอป ทางลัด -
สร้างออบเจ็กต์
ShortcutInfo
ด้วย 1 ใน 2 วิธี ขึ้นอยู่กับ ว่ามีทางลัดอยู่หรือไม่-
หากมีทางลัดอยู่ ให้สร้างออบเจ็กต์
ShortcutInfo
ที่ มีเฉพาะรหัสของทางลัดที่มีอยู่เท่านั้น ระบบค้นหาและปักหมุดทั้งหมด อื่นๆ ที่เกี่ยวข้องกับทางลัดโดยอัตโนมัติ -
หากต้องการปักหมุดทางลัดใหม่ ให้สร้าง
ShortcutInfo
ที่มีรหัส Intent และป้ายกำกับสั้นๆ สำหรับ ทางลัด
-
หากมีทางลัดอยู่ ให้สร้างออบเจ็กต์
-
ปักหมุดทางลัดไปยัง Launcher ของอุปกรณ์ด้วยการเรียกใช้
requestPinShortcut()
ในระหว่างขั้นตอนนี้ คุณสามารถส่งผ่านPendingIntent
ซึ่งจะแจ้งแอปของคุณเฉพาะเมื่อหมุดทางลัด สำเร็จหลังจากปักหมุดทางลัดแล้ว แอปจะอัปเดตเนื้อหาได้โดยใช้
updateShortcuts()
สำหรับข้อมูลเพิ่มเติม โปรดอ่าน อัปเดต แป้นพิมพ์ลัด
ข้อมูลโค้ดต่อไปนี้แสดงวิธีสร้างทางลัดที่ปักหมุดไว้
Kotlin
val shortcutManager = getSystemService(ShortcutManager::class.java) if (shortcutManager!!.isRequestPinShortcutSupported) { // Enable the existing shortcut with the ID "my-shortcut". val pinShortcutInfo = ShortcutInfo.Builder(context, "my-shortcut").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 = shortcutManager.createShortcutResultIntent(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 */ 0) shortcutManager.requestPinShortcut(pinShortcutInfo, successCallback.intentSender) }
Java
ShortcutManager shortcutManager = context.getSystemService(ShortcutManager.class); if (shortcutManager.isRequestPinShortcutSupported()) { // Enable the existing shortcut with the ID "my-shortcut". ShortcutInfo pinShortcutInfo = new ShortcutInfo.Builder(context, "my-shortcut").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. Intent pinnedShortcutCallbackIntent = shortcutManager.createShortcutResultIntent(pinShortcutInfo); // Configure the intent so that your app's broadcast receiver gets the // callback successfully. For details, see PendingIntent.getBroadcast(). PendingIntent successCallback = PendingIntent.getBroadcast(context, /* request code */ 0, pinnedShortcutCallbackIntent, /* flags */ 0); shortcutManager.requestPinShortcut(pinShortcutInfo, successCallback.getIntentSender()); }
สร้างกิจกรรมทางลัดที่กำหนดเอง
และยังสามารถสร้างกิจกรรมพิเศษ ที่ช่วยให้ผู้ใช้สร้างทางลัด มาพร้อมกับตัวเลือกที่กำหนดเองและปุ่มยืนยัน รูปที่ 2 แสดง ตัวอย่างของกิจกรรมประเภทนี้ในแอป Gmail
ในไฟล์ Manifest ของแอป ให้เพิ่ม
ACTION_CREATE_SHORTCUT
ของกิจกรรม
วันที่ <intent-filter>
การประกาศนี้จะตั้งค่าลักษณะการทำงานต่อไปนี้เมื่อผู้ใช้พยายาม
วิธีสร้างทางลัด:
- ระบบจะเริ่มกิจกรรมเฉพาะของแอป
- ผู้ใช้ตั้งค่าตัวเลือกสำหรับทางลัด
- ผู้ใช้เลือกปุ่มยืนยัน
-
แอปสร้างทางลัดโดยใช้
createShortcutResultIntent()
เมธอดนี้จะแสดงค่าIntent
, ซึ่งแอปของคุณจะส่งต่อกลับไปยังกิจกรรมที่ดำเนินการอยู่ก่อนหน้านี้โดยใช้setResult()
-
การโทรจากแอปของคุณ
finish()
เกี่ยวกับกิจกรรมที่ใช้สร้างทางลัดที่กำหนดเอง
ในทํานองเดียวกัน แอปสามารถแจ้งให้ผู้ใช้เพิ่มทางลัดที่ปักหมุดไว้ลงในบ้าน หลังการติดตั้งหรือครั้งแรกที่เปิดแอป วิธีนี้เป็น ที่มีประสิทธิภาพ เพราะจะช่วยให้ผู้ใช้ของคุณสร้างทางลัดเป็นส่วนหนึ่งของ เวิร์กโฟลว์ปกติทั่วไป
แป้นพิมพ์ลัดทดสอบ
หากต้องการทดสอบทางลัดของแอป ให้ติดตั้งแอปในอุปกรณ์ที่มี Launcher ที่รองรับแป้นพิมพ์ลัด จากนั้นดำเนินการต่อไปนี้
- แตะและ ถือไอคอน Launcher ของแอปค้างไว้เพื่อดูทางลัดที่คุณกำหนด สำหรับแอปของคุณ
- ลากทางลัดเพื่อปักหมุดไว้ที่ Launcher ของอุปกรณ์