ทางลัดจะนำเสนอเนื้อหาบางประเภทแก่ผู้ใช้โดยช่วยให้ผู้ใช้เข้าถึงส่วนต่างๆ ของแอปได้อย่างรวดเร็ว
วิธีนำเสนอเนื้อหาด้วยทางลัดจะขึ้นอยู่กับกรณีการใช้งานและบริบทของทางลัดว่าเป็นแบบที่แอปเป็นผู้กำหนดหรือผู้ใช้เป็นผู้กำหนด แม้ว่าบริบทของทางลัดแบบคงที่จะไม่เปลี่ยนแปลงและบริบทของทางลัดแบบไดนามิกจะเปลี่ยนแปลงอยู่ตลอดเวลา แต่แอปของคุณจะเป็นผู้กำหนดบริบทในทั้ง 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จัดกลุ่มประเภทการดำเนินการที่ทางลัดของแอปทำ เช่น การสร้างข้อความแชทใหม่
ดูรายการหมวดหมู่ทางลัดที่รองรับได้ที่
ShortcutInfoข้อมูลอ้างอิงคลาสcapability-bindingประกาศความสามารถที่ลิงก์กับทางลัด
ในตัวอย่างก่อนหน้า ทางลัดจะลิงก์กับความสามารถที่ประกาศไว้สำหรับ
CREATE_MESSAGEซึ่งเป็น Intent ในตัวของการดำเนินการของแอป การผูกความสามารถนี้ช่วยให้ผู้ใช้ใช้คำสั่งเสียงกับ Google Assistant เพื่อเรียกใช้ทางลัดได้
สร้างทางลัดแบบไดนามิก
ทางลัดแบบไดนามิกจะให้ลิงก์ไปยังการดำเนินการที่เฉพาะเจาะจงซึ่งคำนึงถึงบริบทภายในแอป การดำเนินการเหล่านี้อาจเปลี่ยนแปลงได้ระหว่างการใช้งานแอปและขณะที่แอปกำลังทำงาน การใช้งานที่ดีสำหรับทางลัดแบบไดนามิก ได้แก่ การโทรหาบุคคลที่เฉพาะเจาะจง การไปยังสถานที่ที่เฉพาะเจาะจง และการโหลดเกมจากจุดบันทึกล่าสุดของผู้ใช้ นอกจากนี้ คุณยังใช้ทางลัดแบบไดนามิกเพื่อเปิดการสนทนาได้ด้วย
ไลบรารี ShortcutManagerCompat Jetpack เป็นตัวช่วยสำหรับ
ShortcutManager API ซึ่งช่วยให้คุณจัดการทางลัดแบบไดนามิกใน
แอปได้ การใช้ไลบรารี ShortcutManagerCompat จะช่วยลดโค้ด Boilerplate และ
ช่วยให้มั่นใจว่าทางลัดจะทำงานอย่างสอดคล้องกันใน Android เวอร์ชันต่างๆ นอกจากนี้ คุณยังต้องใช้ไลบรารีนี้เพื่อพุชทางลัดแบบไดนามิกเพื่อให้มีสิทธิ์
ปรากฏในแพลตฟอร์มของ Google เช่น Assistant ด้วย Google
Shortcuts Integration Library
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 Shortcuts Integration Library
Google Shortcuts Integration Library เป็นไลบรารี Jetpack ที่ไม่บังคับ ซึ่งช่วยให้คุณพุชทางลัดแบบไดนามิกที่แสดงในแพลตฟอร์มของ Android เช่น Launcher และแพลตฟอร์มของ Google ได้ การใช้ไลบรารีนี้ช่วยให้ผู้ใช้ค้นพบทางลัดเพื่อเข้าถึงเนื้อหาที่เฉพาะเจาะจงหรือเล่นซ้ำการดำเนินการในแอปได้อย่างรวดเร็ว
ทางลัดแบบไดนามิกที่พุชด้วยไลบรารีนี้จะไม่ขึ้นอยู่กับ ขีดจำกัดของทางลัดที่บังคับใช้ตามอุปกรณ์ ซึ่งช่วยให้แอปของคุณพุชทางลัดได้ทุกครั้งที่ผู้ใช้ดำเนินการที่เชื่อมโยงในแอปเสร็จสมบูรณ์ การพุชทางลัดบ่อยๆ ด้วยวิธีนี้จะช่วยให้ Google เข้าใจรูปแบบการใช้งานของผู้ใช้และแนะนำทางลัดที่เกี่ยวข้องตามบริบทให้แก่ผู้ใช้
ตัวอย่างเช่น Assistant สามารถเรียนรู้จากทางลัดที่พุชจากแอปติดตามการออกกำลังกายว่าผู้ใช้มักจะวิ่งทุกเช้า และแนะนำทางลัด "เริ่มวิ่ง" อย่างกระตือรือร้นเมื่อผู้ใช้หยิบโทรศัพท์ขึ้นมาในตอนเช้า
Google Shortcuts Integration Library ไม่มีฟังก์ชันการทำงานที่กำหนดแอดเดรสได้ในตัวเอง การเพิ่มไลบรารีนี้ลงในแอปจะช่วยให้แพลตฟอร์มของ Google รับทางลัดที่แอปของคุณพุชโดยใช้ ShortcutManagerCompat ได้
หากต้องการใช้ไลบรารีนี้ในแอป ให้ทำตามขั้นตอนต่อไปนี้
อัปเดตไฟล์
gradle.propertiesเพื่อรองรับ ไลบรารี AndroidX โดยทำดังนี้android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=trueใน
app/build.gradleให้เพิ่มการพึ่งพาสำหรับ Google Shortcuts Integration Library และShortcutManagerCompatโดยทำดังนี้dependencies { implementation "androidx.core:core:1.6.0" implementation 'androidx.core:core-google-shortcuts:1.0.0' ... }
เมื่อเพิ่มการพึ่งพาของไลบรารีลงในโปรเจ็กต์ Android แล้ว แอปของคุณจะใช้เมธอด pushDynamicShortcut() จาก ShortcutManagerCompat เพื่อพุชทางลัดแบบไดนามิกที่มีสิทธิ์แสดงใน Launcher และแพลตฟอร์มของ Google ที่เข้าร่วมได้
สร้างทางลัดที่ปักหมุด
ใน Android 8.0 (ระดับ API 26) ขึ้นไป คุณสามารถสร้างทางลัดที่ปักหมุดได้ ทางลัดที่ปักหมุดจะปรากฏใน Launcher ที่รองรับเป็นไอคอนแยกต่างหาก ซึ่งแตกต่างจากทางลัดแบบคงที่และทางลัดแบบไดนามิก รูปที่ 1 แสดงความแตกต่างระหว่างทางลัด 2 ประเภทนี้
หากต้องการปักหมุดทางลัดใน Launcher ที่รองรับโดยใช้แอป ให้ทำตามขั้นตอนต่อไปนี้
- ใช้
isRequestPinShortcutSupported()เพื่อยืนยันว่า Launcher เริ่มต้นของอุปกรณ์ รองรับการปักหมุดทางลัดในแอป สร้างออบเจ็กต์
ShortcutInfoด้วยวิธีใดวิธีหนึ่งต่อไปนี้ โดยขึ้นอยู่กับว่าทางลัดมีอยู่หรือไม่- หากทางลัดมีอยู่ ให้สร้างออบเจ็กต์
ShortcutInfoที่มีเฉพาะรหัสของทางลัดที่มีอยู่ ระบบจะค้นหาและปักหมุดข้อมูลอื่นๆ ทั้งหมดที่เกี่ยวข้องกับทางลัดโดยอัตโนมัติ - หากคุณกำลังปักหมุดทางลัดใหม่ ให้สร้างออบเจ็กต์
ShortcutInfoที่มีรหัส, Intent และป้ายกำกับสั้นๆ สำหรับทางลัดใหม่
- หากทางลัดมีอยู่ ให้สร้างออบเจ็กต์
ปักหมุดทางลัดไปยัง Launcher ของอุปกรณ์โดยเรียกใช้
requestPinShortcut()ในระหว่างกระบวนการนี้ คุณสามารถส่งออบเจ็กต์PendingIntentซึ่งจะแจ้งให้แอปของคุณทราบเมื่อปักหมุดทางลัด สำเร็จเท่านั้นหลังจากปักหมุดทางลัดแล้ว แอปของคุณจะอัปเดตเนื้อหาของทางลัดได้โดยใช้เมธอด
updateShortcuts()ดูข้อมูลเพิ่มเติมได้ที่ อัปเดต ทางลัด
ข้อมูลโค้ดต่อไปนี้แสดงวิธีสร้างทางลัดที่ปักหมุด
val shortcutManager = getSystemService<ShortcutManager>()
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)
}
สร้างกิจกรรมทางลัดที่กำหนดเอง
นอกจากนี้ คุณยังสร้างกิจกรรมเฉพาะที่ช่วยให้ผู้ใช้สร้างทางลัดได้ โดยมีตัวเลือกที่กำหนดเองและปุ่มยืนยัน รูปที่ 2 แสดงตัวอย่างกิจกรรมประเภทนี้ในแอป Gmail
ในไฟล์ Manifest ของแอป ให้เพิ่ม ACTION_CREATE_SHORTCUT ลงใน
องค์ประกอบ <intent-filter> ของกิจกรรม การประกาศนี้จะตั้งค่าลักษณะการทำงานต่อไปนี้เมื่อผู้ใช้พยายามสร้างทางลัด
- ระบบจะเริ่มกิจกรรมเฉพาะของแอป
- ผู้ใช้ตั้งค่าตัวเลือกสำหรับทางลัด
- ผู้ใช้เลือกปุ่มยืนยัน
- แอปของคุณจะสร้างทางลัดโดยใช้เมธอด
createShortcutResultIntent()เมธอดนี้จะแสดงผลIntentซึ่งแอปของคุณจะส่งกลับไปยัง กิจกรรมที่ดำเนินการก่อนหน้านี้โดยใช้setResult() - แอปของคุณจะเรียกใช้
finish()ในกิจกรรมที่ใช้สร้าง ทางลัดที่กำหนดเอง
ในทำนองเดียวกัน แอปของคุณสามารถแจ้งให้ผู้ใช้เพิ่มทางลัดที่ปักหมุดลงในหน้าจอหลักหลังการติดตั้งหรือเมื่อเปิดแอปเป็นครั้งแรก วิธีนี้มีประสิทธิภาพเนื่องจากช่วยให้ผู้ใช้สร้างทางลัดเป็นส่วนหนึ่งของเวิร์กโฟลว์ปกติ
ทดสอบทางลัด
หากต้องการทดสอบทางลัดของแอป ให้ติดตั้งแอปในอุปกรณ์ที่มี Launcher ที่รองรับทางลัด จากนั้นดำเนินการต่อไปนี้
- แตะไอคอน Launcher ของแอปค้างไว้เพื่อดูทางลัดที่คุณกำหนดไว้สำหรับแอป
- ลากทางลัดเพื่อปักหมุดทางลัดไปยัง Launcher ของอุปกรณ์