Lối tắt cung cấp các loại nội dung cụ thể cho người dùng của bạn bằng cách giúp họ cung cấp truy cập nhanh vào các phần của ứng dụng.
Cách bạn phân phối nội dung bằng lối tắt sẽ phụ thuộc vào trường hợp sử dụng của bạn và việc liệu ngữ cảnh của lối tắt là do ứng dụng hoặc người dùng hướng đến. Mặc dù mô hình tĩnh ngữ cảnh của lối tắt không thay đổi và ngữ cảnh của lối tắt động liên tục thay đổi, ứng dụng của bạn sẽ thúc đẩy ngữ cảnh trong cả hai trường hợp. Trong trường hợp người dùng chọn cách ứng dụng của bạn cung cấp nội dung cho họ, chẳng hạn như bằng lối tắt được ghim, ngữ cảnh do người dùng xác định. Các tình huống sau đây mô tả cách sử dụng trường hợp của mỗi loại lối tắt:
- Tĩnh lối tắt là phù hợp nhất với những ứng dụng liên kết đến nội dung bằng một trong suốt thời gian tương tác của người dùng với ứng dụng. Vì hầu hết các trình chạy chỉ hiển thị bốn lối tắt cùng một lúc, lối tắt tĩnh rất hữu ích khi thực hiện một quy trình công việc theo cách nhất quán, chẳng hạn như nếu người dùng muốn xem lịch của họ hoặc gửi email theo một cách cụ thể .
- Động lối tắt dùng cho các thao tác trong ứng dụng nhạy cảm với bối cảnh. Các lối tắt theo ngữ cảnh được điều chỉnh cho phù hợp với hành động mà người dùng thực hiện trong ứng dụng. Ví dụ: nếu bạn tạo một trò chơi cho phép người dùng bắt đầu từ cấp độ hiện tại của họ khi khởi chạy, bạn cần cập nhật thường xuyên. Việc sử dụng lối tắt động cho phép bạn cập nhật lối tắt mỗi khi người dùng hoàn thành một cấp độ.
- Đã ghim lối tắt dùng cho các thao tác cụ thể do người dùng thực hiện. Ví dụ: người dùng có thể muốn ghim một trang web cụ thể vào trình chạy. Đây là có lợi vì nó cho phép người dùng thực hiện một hành động tuỳ chỉnh, chẳng hạn như điều hướng đến trang web bằng một bước, nhanh hơn so với việc sử dụng tuỳ chọn mặc định của một trình duyệt.
Tạo lối tắt tĩnh
Lối tắt tĩnh cung cấp đường liên kết đến các thao tác chung trong ứng dụng và phải duy trì nhất quán trong suốt thời gian hoạt động của phiên bản hiện tại của ứng dụng. Các lựa chọn phù hợp cho lối tắt tĩnh bao gồm xem thư đã gửi, đặt báo thức và hiển thị hoạt động tập thể dục của người dùng trong ngày.
Để tạo lối tắt tĩnh, hãy làm như sau:
-
Trong tệp
AndroidManifest.xml
của ứng dụng, hãy tìm hoạt động có bộ lọc ý định được đặt thànhandroid.intent.action.MAIN
vàandroid.intent.category.LAUNCHER
danh mục. -
Thêm một
<meta-data>
vào hoạt động này tham chiếu đến tệp tài nguyên nơi ứng dụng lối tắt được xác định:<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>
-
Tạo một tệp tài nguyên mới có tên là
res/xml/shortcuts.xml
. -
Trong tệp tài nguyên mới, hãy thêm một thành phần gốc
<shortcuts>
chứa danh sách các phần tử<shortcut>
. Trong mỗi Phần tử<shortcut>
, bao gồm thông tin về một giá trị tĩnh bao gồm biểu tượng, nhãn mô tả và ý định mà lối tắt đó khởi chạy trong ứng dụng:<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>
Tuỳ chỉnh các giá trị thuộc tính
Danh sách sau đây bao gồm nội dung mô tả cho các thuộc tính trong
một lối tắt tĩnh. Cung cấp giá trị cho android:shortcutId
và
android:shortcutShortLabel
Tất cả giá trị khác là không bắt buộc.
-
android:shortcutId
-
Một giá trị cố định kiểu chuỗi đại diện cho lối tắt khi
ShortcutManager
đối tượng thực hiện các thao tác trên đó. -
android:shortcutShortLabel
-
Cụm từ ngắn gọn mô tả mục đích của lối tắt. Nếu có thể, giới hạn mô tả ngắn này ở 10 ký tự.
Để biết thêm thông tin, hãy xem
setShortLabel()
. -
android:shortcutLongLabel
-
Cụm từ mở rộng mô tả mục đích của lối tắt. Nếu có đủ dấu cách, trình chạy sẽ hiển thị giá trị này thay vì
android:shortcutShortLabel
. Khi có thể, hãy hạn chế thời lượng này mô tả dài 25 ký tự.Để biết thêm thông tin, hãy xem
setLongLabel()
. -
android:shortcutDisabledMessage
-
Thông báo xuất hiện trong trình chạy được hỗ trợ khi người dùng cố gắng khởi chạy một lối tắt bị vô hiệu hoá. Thông báo phải giải thích cho người dùng tại sao phím tắt đã bị tắt. Giá trị của thuộc tính này không có hiệu lực nếu
android:enabled
làtrue
. -
android:enabled
-
Xác định xem người dùng có thể tương tác với lối tắt từ một phím tắt được hỗ trợ hay không trình chạy. Giá trị mặc định của
android:enabled
làtrue
Nếu bạn đặt thànhfalse
, hãy đặtandroid:shortcutDisabledMessage
, giải thích lý do bạn tắt phím tắt đó. Nếu bạn không cần đưa ra thông điệp như vậy, hãy xoá hoàn toàn lối tắt khỏi tệp XML. -
android:icon
-
bitmap hoặc thích ứng biểu tượng mà trình chạy sử dụng khi hiển thị lối tắt cho người dùng. Chiến dịch này có thể là đường dẫn đến hình ảnh hoặc tệp tài nguyên chứa hình ảnh. Sử dụng biểu tượng thích ứng bất cứ khi nào có thể để cải thiện hiệu suất và nhất quán.
Định cấu hình các thành phần bên trong
Tệp XML liệt kê các lối tắt tĩnh của một ứng dụng hỗ trợ những tính năng sau
bên trong mỗi phần tử <shortcut>
. Bạn
phải bao gồm một phần tử bên trong intent
cho mỗi
mà bạn xác định.
-
intent
-
Thao tác mà hệ thống khởi chạy khi người dùng chọn lối tắt. Ý định này phải cung cấp một giá trị cho
android:action
.Bạn có thể cung cấp nhiều ý định cho một lối tắt. Xem Quản lý nhiều ý định và hoạt động, Đặt một ý định và
TaskStackBuilder
tài liệu tham khảo lớp học để biết thông tin chi tiết. -
categories
-
Cung cấp một nhóm các loại thao tác mà lối tắt của ứng dụng thực hiện, chẳng hạn như tạo tin nhắn trò chuyện mới.
Để biết danh sách các danh mục lối tắt được hỗ trợ, hãy xem
ShortcutInfo
tham chiếu lớp. -
capability-binding
-
Khai báo chức năng được liên kết với lối tắt.
Trong ví dụ trước, phím tắt được liên kết với một chức năng được khai báo với
CREATE_MESSAGE
! là một Hành động trong ứng dụng ý định tích hợp. Tính năng liên kết này cho phép người dùng sử dụng lệnh thoại thông qua Trợ lý Google để gọi một lối tắt.
Tạo lối tắt động
Lối tắt động cung cấp đường liên kết đến các hành động cụ thể, theo ngữ cảnh trong ứng dụng của bạn. Những hành động này có thể thay đổi giữa các lần sử dụng ứng dụng và trong khi ứng dụng của bạn đang chạy. Cách sử dụng hiệu quả lối tắt động bao gồm gọi điện cho một người cụ thể, điều hướng đến một vị trí cụ thể và tải trò chơi từ lượt lưu gần đây nhất của người dùng điểm. Bạn cũng có thể sử dụng lối tắt động để mở một cuộc trò chuyện.
Chiến lược phát hành đĩa đơn
ShortcutManagerCompat
Thư viện Jetpack là một công cụ trợ giúp cho
ShortcutManager
API, cho phép bạn quản lý lối tắt động trong ứng dụng của mình. Sử dụng
Thư viện ShortcutManagerCompat
giúp giảm mã nguyên mẫu và hỗ trợ
đảm bảo lối tắt của bạn hoạt động nhất quán trên các phiên bản Android. Chiến dịch này
bạn cũng cần có thư viện để đẩy lối tắt động sao cho chúng đủ điều kiện
xuất hiện trên các nền tảng của Google (chẳng hạn như Trợ lý) bằng
Thư viện tích hợp lối tắt của Google.
API ShortcutManagerCompat
cho phép ứng dụng của bạn thực hiện những việc sau
thao tác có lối tắt động:
-
Đẩy và cập nhật: sử dụng
pushDynamicShortcut()
để xuất bản và cập nhật lối tắt động. Nếu đã có sẵn thuộc tính động hoặc lối tắt được ghim có cùng mã nhận dạng, mỗi lối tắt có thể thay đổi sẽ được cập nhật. -
Xoá: xoá một nhóm các lối tắt động bằng
removeDynamicShortcuts()
. Xoá tất cả lối tắt động bằngremoveAllDynamicShortcuts()
.
Để biết thêm thông tin về cách thực hiện các thao tác đối với lối tắt, hãy xem
Quản lý lối tắt
và
ShortcutManagerCompat
tham chiếu.
Sau đây là ví dụ về cách tạo lối tắt động và liên kết lối tắt đó với ứng dụng:
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);
Thêm Thư viện tích hợp lối tắt của Google
Thư viện tích hợp lối tắt của Google là thư viện Jetpack không bắt buộc. Nó cho phép bạn đẩy các lối tắt động có thể hiển thị trên nền tảng Android, chẳng hạn như dưới dạng trình chạy và các nền tảng của Google, chẳng hạn như Trợ lý. Đang sử dụng thư viện này giúp người dùng khám phá ra các lối tắt để truy cập nhanh vào nội dung cụ thể hoặc phát lại hành động trong ứng dụng của mình.
Ví dụ: một ứng dụng nhắn tin có thể đẩy một lối tắt động cho một người liên hệ có tên là "Alex" sau khi người dùng nhắn tin cho người đó. Sau lối tắt động là đã đẩy, nếu người dùng hỏi Trợ lý, "Ok Google, nhắn tin cho Alex trên ExampleApp," Trợ lý có thể chạy ExampleApp và tự động định cấu hình ứng dụng gửi tin nhắn cho Alex.
Các lối tắt động được đẩy bằng thư viện này không phải tuân thủ giới hạn lối tắt thực thi trên cơ sở từng thiết bị. Quyền này cho phép ứng dụng đẩy một lối tắt mỗi khi người dùng hoàn tất một hành động liên quan trong ứng dụng của bạn. Đẩy các phím tắt thường dùng giúp Google hiểu được thói quen sử dụng của người dùng và đề xuất theo ngữ cảnh lối tắt phù hợp cho chúng.
Ví dụ: Trợ lý có thể học qua các lối tắt được đẩy từ ứng dụng theo dõi hoạt động thể dục mà người dùng thường chạy mỗi sáng và chủ động đề xuất "bắt đầu chạy bộ" khi người dùng nhấc điện thoại lên trong buổi sáng.
Thư viện tích hợp lối tắt của Google không cung cấp bất kỳ địa chỉ nào
chức năng. Việc thêm thư viện này vào ứng dụng của bạn cho phép các nền tảng của Google chụp
trong các lối tắt mà ứng dụng đẩy bằng ShortcutManagerCompat
.
Để sử dụng thư viện này trong ứng dụng, hãy làm theo các bước sau:
-
Cập nhật tệp
gradle.properties
để hỗ trợ Thư viện AndroidX:android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true
-
Trong
app/build.gradle
, hãy thêm các phần phụ thuộc cho thuộc tính Google Thư viện tích hợp lối tắt vàShortcutManagerCompat
:dependencies { implementation "androidx.core:core:1.6.0" implementation 'androidx.core:core-google-shortcuts:1.0.0' ... }
Khi thêm các phần phụ thuộc của thư viện vào dự án Android, ứng dụng của bạn có thể sử dụng
phương thức pushDynamicShortcut()
từ
ShortcutManagerCompat
để đẩy các lối tắt động đủ điều kiện
để hiển thị trên trình chạy và các nền tảng tham gia của Google.
Tạo lối tắt được ghim
Bạn có thể tạo lối tắt được ghim trên Android 8.0 (API cấp 26) trở lên. Không giống như lối tắt tĩnh và động, lối tắt được ghim sẽ xuất hiện trong phần được hỗ trợ trình chạy dưới dạng biểu tượng riêng biệt. Hình 1 cho thấy sự khác biệt giữa hai các loại lối tắt.
Để ghim lối tắt vào trình chạy được hỗ trợ bằng ứng dụng của bạn, hãy hoàn thành các bước sau:
-
Sử dụng
isRequestPinShortcutSupported()
để xác minh rằng trình chạy mặc định của thiết bị có hỗ trợ tính năng ghim trong ứng dụng lối tắt. -
Tạo đối tượng
ShortcutInfo
theo một trong hai cách, tuỳ thuộc về việc lối tắt có tồn tại hay không:-
Nếu có lối tắt này, hãy tạo một đối tượng
ShortcutInfo
chỉ chứa ID của lối tắt hiện có. Hệ thống sẽ tìm và ghim tất cả thông tin khác liên quan đến lối tắt. -
Nếu bạn đang ghim một lối tắt mới, hãy tạo một
ShortcutInfo
đối tượng chứa mã nhận dạng, ý định và nhãn ngắn cho thuộc tính lối tắt.
-
Nếu có lối tắt này, hãy tạo một đối tượng
-
Ghim lối tắt vào trình chạy của thiết bị bằng cách gọi
requestPinShortcut()
. Trong quá trình này, bạn có thể chuyểnPendingIntent
đối tượng này chỉ thông báo cho ứng dụng khi phím tắt ghim thành công.Sau khi lối tắt được ghim, ứng dụng của bạn có thể cập nhật nội dung của lối tắt bằng
updateShortcuts()
. Để biết thêm thông tin, hãy đọc Cập nhật lối tắt.
Đoạn mã sau đây minh hoạ cách tạo lối tắt được ghim.
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()); }
Tạo một hoạt động lối tắt tuỳ chỉnh
Bạn cũng có thể tạo một hoạt động chuyên biệt giúp người dùng tạo lối tắt, hoàn thành bằng các tuỳ chọn tuỳ chỉnh và nút xác nhận. Hình 2 cho thấy ví dụ về loại hoạt động này trong ứng dụng Gmail.
Trong tệp kê khai của ứng dụng, hãy thêm
ACTION_CREATE_SHORTCUT
vào mục hoạt động
<intent-filter>
. Khai báo này thiết lập hành vi sau đây khi người dùng cố gắng
để tạo lối tắt:
- Hệ thống sẽ bắt đầu hoạt động đặc biệt của ứng dụng.
- Người dùng đặt các tuỳ chọn cho phím tắt.
- Người dùng chọn nút xác nhận.
-
Ứng dụng của bạn tạo lối tắt bằng cách sử dụng
createShortcutResultIntent()
. Phương thức này trả về mộtIntent
, hoạt động mà ứng dụng của bạn chuyển tiếp trở lại hoạt động được thực thi trước đó bằng cách sử dụngsetResult()
-
Ứng dụng của bạn gọi điện
finish()
dựa trên hoạt động dùng để tạo phím tắt tuỳ chỉnh.
Tương tự, ứng dụng của bạn có thể nhắc người dùng thêm lối tắt được ghim vào màn hình chính màn hình sau khi cài đặt hoặc lần đầu tiên khởi chạy ứng dụng. Phương thức này vì nó giúp người dùng tạo lối tắt quy trình làm việc thông thường.
Thử nghiệm lối tắt
Để kiểm thử lối tắt của ứng dụng, hãy cài đặt ứng dụng trên một thiết bị có trình chạy có hỗ trợ lối tắt. Sau đó, thực hiện những thao tác sau:
- Chạm và giữ biểu tượng trình chạy của ứng dụng để xem các lối tắt mà bạn xác định cho ứng dụng của mình.
- Kéo một lối tắt để ghim vào trình chạy của thiết bị.