Thiết kế tiện ích sao cho người dùng có thể định cấu hình các đặc điểm cụ thể. Ví dụ: tiện ích đồng hồ có thể cho phép người dùng định cấu hình múi giờ cần hiển thị.
Nếu bạn muốn cho phép người dùng định cấu hình chế độ cài đặt của tiện ích, hãy tạo cấu hình tiện ích
Activity. Hoạt động này sẽ tự động được
máy chủ tiện ích ứng dụng chạy khi tiện ích được tạo hoặc sau đó, tuỳ thuộc vào các
lựa chọn cấu hình mà bạn chỉ định.
Khai báo hoạt động cấu hình
Khai báo hoạt động cấu hình dưới dạng một hoạt động bình thường trong tệp kê khai Android. Máy chủ tiện ích ứng dụng chạy hoạt động này bằng ACTION_APPWIDGET_CONFIGURE
hành động, vì vậy, hoạt động này cần chấp nhận ý định này. Ví dụ:
<activity android:name=".ExampleAppWidgetConfigurationActivity">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
</intent-filter>
</activity>
Khai báo hoạt động trong tệp AppWidgetProviderInfo.xml bằng thuộc tính android:configure. Xem thêm thông tin về cách khai báo tệp
này. Dưới đây là ví dụ về cách khai báo hoạt động cấu hình:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
...
android:configure="com.example.android.ExampleAppWidgetConfigurationActivity"
... >
</appwidget-provider>
Hoạt động này được khai báo bằng một không gian tên đủ điều kiện, vì trình chạy tham chiếu đến hoạt động này từ bên ngoài phạm vi gói của bạn.
Bạn chỉ cần làm như vậy để bắt đầu hoạt động cấu hình. Tiếp theo, bạn cần triển khai hoạt động thực tế.
Triển khai hoạt động cấu hình
Bạn cần nhớ 2 điểm quan trọng khi triển khai hoạt động này:
- Máy chủ tiện ích ứng dụng gọi hoạt động cấu hình và hoạt động cấu hình phải luôn trả về kết quả. Kết quả phải bao gồm Mã tiện ích ứng dụng do ý định chạy Hoạt động này chuyển, được lưu trong các phần bổ sung của ý định dưới dạng
EXTRA_APPWIDGET_ID.- Hệ thống không gửi chương trình phát
ACTION_APPWIDGET_UPDATEkhi chạy hoạt động cấu hình. Điều này có nghĩa là hệ thống không gọi các bản cập nhật tiện ích của bạn ban đầu khi tiện ích được tạo. Hoạt động cấu hình có trách nhiệm yêu cầu bản cập nhật từGlanceAppWidgetkhi tạo tiện ích lần đầu tiên. Tuy nhiên, các bản cập nhật sẽ tự động được kích hoạt cho các chu kỳ tiếp theo.
- Hệ thống không gửi chương trình phát
Hãy xem các đoạn mã trong phần sau đây để biết ví dụ về cách trả về kết quả từ cấu hình và cập nhật tiện ích Glance.
Cập nhật tiện ích từ hoạt động cấu hình
Khi một tiện ích sử dụng hoạt động cấu hình, hoạt động đó có trách nhiệm cập nhật tiện ích khi quá trình cấu hình hoàn tất. Bạn có thể thực hiện việc này bằng cách kích hoạt bản cập nhật thủ công trực tiếp từ thực thể GlanceAppWidget.
Dưới đây là tóm tắt quy trình cập nhật đúng cách tiện ích và đóng hoạt động cấu hình:
Lấy Mã tiện ích ứng dụng từ ý định chạy Hoạt động:
val appWidgetId = intent?.extras?.getInt( AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID ) ?: AppWidgetManager.INVALID_APPWIDGET_IDĐặt kết quả hoạt động thành
RESULT_CANCELED.Bằng cách này, nếu người dùng thoát khỏi hoạt động trước khi kết thúc, hệ thống sẽ thông báo cho máy chủ tiện ích ứng dụng rằng cấu hình đã bị huỷ và máy chủ không thêm tiện ích:
val resultValue = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) setResult(Activity.RESULT_CANCELED, resultValue)Định cấu hình tiện ích theo ý muốn của người dùng, chẳng hạn như ghi các lựa chọn vào Datastore liên tục hoặc cơ sở dữ liệu cục bộ.
Khi quá trình cấu hình hoàn tất, hãy truy xuất
GlanceIdtương ứng với mã tiện ích nền tảng:val glanceAppWidgetManager = GlanceAppWidgetManager(context) val glanceId = glanceAppWidgetManager.getGlanceIdBy(appWidgetId)Cập nhật nội dung tiện ích bằng cách gọi hàm tạm ngưng
updatetrên thực thểGlanceAppWidget:// Update the GlanceAppWidget directly ExampleGlanceWidget().update(context, glanceId)Tạo ý định trả về, đặt ý định đó bằng kết quả hoạt động và hoàn tất hoạt động:
val resultValue = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) setResult(Activity.RESULT_OK, resultValue) finish()
Các lựa chọn cấu hình tiện ích
Theo mặc định, máy chủ tiện ích ứng dụng chỉ chạy hoạt động cấu hình một lần, ngay sau khi người dùng thêm tiện ích vào màn hình chính. Tuy nhiên, bạn có thể chỉ định các lựa chọn cho phép người dùng định cấu hình lại các tiện ích hiện có hoặc bỏ qua cấu hình tiện ích ban đầu bằng cách cung cấp cấu hình tiện ích mặc định.
Cho phép người dùng định cấu hình lại các tiện ích đã đặt
Để cho phép người dùng định cấu hình lại các tiện ích hiện có, hãy chỉ định cờ reconfigurable
trong thuộc tính widgetFeatures của appwidget-provider. Ví dụ:
<appwidget-provider
android:configure="com.myapp.ExampleAppWidgetConfigurationActivity"
android:widgetFeatures="reconfigurable">
</appwidget-provider>
Người dùng có thể định cấu hình lại tiện ích bằng cách chạm và giữ tiện ích rồi nhấn vào nút Định cấu hình lại (được gắn nhãn 1 trong hình 1).
Sử dụng cấu hình mặc định của tiện ích
Bạn có thể cung cấp trải nghiệm tiện ích liền mạch hơn bằng cách cho phép người dùng bỏ qua bước cấu hình ban đầu. Để thực hiện việc này, hãy chỉ định cả cờ
configuration_optional và reconfigurable trong trường widgetFeatures. Thao tác này sẽ bỏ qua việc chạy hoạt động cấu hình sau khi người dùng thêm tiện ích. Như đã đề cập trước đó, người dùng vẫn có thể định cấu hình lại tiện ích
sau đó. Ví dụ: tiện ích đồng hồ có thể bỏ qua cấu hình ban đầu và hiển thị múi giờ của thiết bị theo mặc định.
Dưới đây là ví dụ về cách đánh dấu hoạt động cấu hình của bạn là có thể định cấu hình lại và không bắt buộc:
<appwidget-provider
android:configure="com.myapp.ExampleAppWidgetConfigurationActivity"
android:widgetFeatures="reconfigurable|configuration_optional">
</appwidget-provider>