Bắt đầu

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Hãy tham khảo các tài nguyên sau đây trước khi bắt đầu cài đặt Health Connect.

Nguồn tham khảo

  • SDK Health Connect (có trên Jetpack). Thêm SDK này vào ứng dụng của bạn để sử dụng Health Connect API.
  • Tài liệu tham khảo API. Hãy xem Tài liệu tham khảo về Jetpack dành cho Health Connect API.
  • Biểu mẫu khai báo yêu cầu API dành cho nhà phát triển. Biểu mẫu để yêu cầu quyền đọc và/hoặc ghi loại dữ liệu.
  • Mã mẫu GitHub và lớp học lập trình (Không bắt buộc). Hãy xem kho lưu trữ mã mẫu GitHub và lớp học lập trình để giúp bạn bắt đầu.

Làm theo các bước nhanh chóng và đơn giản sau đây để tích hợp với ứng dụng Health Connect:

Bước 0: Cài đặt Health Connect

Cài đặt Health Connect của Android vào thiết bị của bạn qua Cửa hàng Google Play. Việc này sẽ xử lý tất cả yêu cầu được ứng dụng gửi qua SDK Health Connect.

Bước 1: Thêm SDK Health Connect vào ứng dụng của bạn

Thêm phần phụ thuộc vào Health Connect SDK trong tệp build.gradle của mô-đun:

dependencies {
  ...
  implementation "androidx.health.connect:connect-client:1.0.0-alpha10"
  ...
}

Tìm phiên bản mới nhất trên thông tin phát hành.

Bước 2: Tải ứng dụng Health Connect

HealthConnectClient là điểm truy cập vào Health Connect API.

Sau đây là nội dung mô tả từng bước về quy trình kết nối với Health Connect:

  1. Để tương tác với Health Connect trong ứng dụng, hãy khai báo tên gói Health Connect ở tệp AndroidManifest.xml của bạn:

    <!-- Check whether Health Connect is installed or not -->
    <queries>
        <package android:name="com.google.android.apps.healthdata" />
    </queries>
    
  2. Kiểm tra xem Health Connect đã được cài đặt hay chưa. Nếu đã được cài đặt, hãy lấy thực thể HealthConnectClient.

    if (HealthConnectClient.isProviderAvailable(context)) {
      // Health Connect is available and installed.
      val healthConnectClient = HealthConnectClient.getOrCreate(context)
    } else {
      // ...
    }
    
  3. Khi đó, ứng dụng phải yêu cầu người dùng cấp quyền. Người dùng có thể cấp hoặc từ chối quyền truy cập vào ứng dụng bất cứ lúc nào.

HealthConnectClient tự động quản lý kết nối với lớp bộ nhớ cơ sở, đồng thời xử lý tất cả IPC và chuyển đổi tuần tự các yêu cầu đi và phản hồi đến.

Bước 3: Khai báo quyền

  1. Khai báo quyền cho các loại dữ liệu mà ứng dụng của bạn sẽ sử dụng.

    Bạn cần khai báo mọi loại dữ liệu mà ứng dụng đọc hoặc ghi bằng cách sử dụng quyền trong tệp kê khai. Để xem danh sách đầy đủ các quyền và những kiểu dữ liệu tương ứng, hãy xem bài viết Danh sách loại dữ liệu.

    Kể từ SDK alpha10 trở lên, Health Connect sử dụng định dạng khai báo quyền tiêu chuẩn của Android.

    <uses-permission android:name="android.permission.health.READ_HEART_RATE"/>
    <uses-permission android:name="android.permission.health.WRITE_HEART_RATE"/>
    <uses-permission android:name="android.permission.health.READ_STEPS"/>
    <uses-permission android:name="android.permission.health.WRITE_STEPS"/>
    

    Nếu bạn đang sử dụng SDK phiên bản alpha09 trở xuống, hãy tạo một tài nguyên mảng trong res/values/health_permissions.xml.

    <resources>
      <array name="health_permissions">
        <item>androidx.health.permission.HeartRate.READ</item>
        <item>androidx.health.permission.HeartRate.WRITE</item>
        <item>androidx.health.permission.Steps.READ</item>
        <item>androidx.health.permission.Steps.WRITE</item>
      </array>
    </resources>
    
  2. Thêm siêu dữ liệu vào tệp kê khai để giải thích hoạt động sử dụng Health Connect của ứng dụng.

    Tệp kê khai của bạn cần cung cấp <activity> để cho người dùng thấy chính sách quyền riêng tư mô tả cách dữ liệu của người dùng được sử dụng và xử lý. Bạn có thể thêm <activity> mới hoặc sửa đổi mã hiện có.

    Hoạt động này cần:

    1. (Chỉ dành cho phiên bản alpha09 trở xuống) Tham chiếu tài nguyên health_permissions nêu trên; và

    2. Khai báo rằng sẽ xử lý ý định ACTION_SHOW_PERMISSIONS_RATIONALE. Ý định này được gửi đến ứng dụng khi người dùng nhấp vào đường liên kết "Đọc chính sách quyền riêng tư" trong hộp thoại quyền truy cập của Health Connect.

    <application>
        ...
        <!-- Activity to show rationale of Health Connect permissions -->
        <activity
            android:name=".PermissionsRationaleActivity"
            android:exported="true"
            android:enabled="true">
          <!-- (a) For alpha09 and below, reference permissions resource -->
          <meta-data
              android:name="health_permissions"
              android:resource="@array/health_permissions" />
          <!-- (b) handle intent -->
          <intent-filter>
            <action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" />
          </intent-filter>
        </activity>
        ...
    </application>
    

Bước 4: Yêu cầu người dùng cấp quyền

Để cho thấy hộp thoại cấp quyền, trước tiên hãy tạo tập hợp quyền cho các loại dữ liệu bắt buộc. Hãy đảm bảo các quyền trong tập hợp này được khai báo đầu tiên như mô tả trước đó.

Đối với phiên bản alpha10 trở lên:

// build a set of permissions for required data types
val PERMISSIONS =
 setOf(
   HealthPermission.getReadPermission(HeartRateRecord::class),
   HealthPermission.getWritePermission(HeartRateRecord::class),
   HealthPermission.getReadPermission(StepsRecord::class),
   HealthPermission.getWritePermission(StepsRecord::class)
 )

Đối với phiên bản alpha09 trở xuống:

// build a set of permissions for required data types
val PERMISSIONS =
 setOf(
   HealthPermission.createReadPermission(HeartRateRecord::class),
   HealthPermission.createWritePermission(HeartRateRecord::class),
   HealthPermission.createReadPermission(StepsRecord::class),
   HealthPermission.createWritePermission(StepsRecord::class)
 )

Tiếp theo, hãy sử dụng getGrantedPermissions() để xem ứng dụng của bạn đã có các quyền cần thiết chưa. Nếu chưa, hãy sử dụng phương thức createRequestPermissionResultContract() để yêu cầu quyền.

// Create the permissions launcher.
val requestPermissionActivityContract = PermissionController.createRequestPermissionResultContract()

val requestPermissions =
 registerForActivityResult(requestPermissionActivityContract) { granted ->
   if (granted.containsAll(PERMISSIONS)) {
     // Permissions successfully granted
   } else {
     // Lack of required permissions
   }
 }

suspend fun checkPermissionsAndRun(healthConnectClient: HealthConnectClient) {
   val granted = healthConnectClient.permissionController.getGrantedPermissions(PERMISSIONS)
   if (granted.containsAll(PERMISSIONS)) {
     // Permissions already granted, proceed with inserting or reading data.
   } else {
     requestPermissions.launch(PERMISSIONS)
   }
}

Nếu người dùng từ chối yêu cầu cấp quyền của bạn hai lần thì ứng dụng của bạn sẽ bị khoá vĩnh viễn và không thể yêu cầu cấp lại quyền. Nếu điều này xảy ra với ứng dụng của bạn trong quá trình phát triển và kiểm thử, hãy đặt lại số yêu cầu cấp quyền bằng cách mở ứng dụng Health Connect rồi chọn cho phép tất cả rồi xoá tất cả. Ngoài ra, hãy sử dụng adb để xoá bộ nhớ đệm của gói Health Connect.

Người dùng có thể cấp hoặc thu hồi quyền bằng ứng dụng Health Connect bất cứ lúc nào. Đừng giả định rằng tập hợp quyền đã cấp không thay đổi; ứng dụng của bạn phải định kỳ kiểm tra các quyền đã cấp và có thể xử lý các tình huống khi quyền đột ngột bị mất.

Dữ liệu sức khoẻ có tính nhạy cảm, vậy nên để duy trì niềm tin của người dùng, hãy chỉ yêu cầu quyền truy cập dữ liệu theo ngữ cảnh. Đừng yêu cầu dữ liệu mà ứng dụng của bạn không sử dụng.