Step count 권한

여기있는 hello health data 코드를 따라했는데 마지막쯤에
If requestPermissions() is called successfully, the permission UI is popped up to the user.
permission UI가 뜰 것이다. 모든 권한 밑 step count에 대한 권한이 안뜨는데 어떤 부분을 추가해야 뜨나요?

저의 코드는 이렇습니다.
package com.example.healthh;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;

import com.samsung.android.sdk.healthdata.HealthConnectionErrorResult;
import com.samsung.android.sdk.healthdata.HealthConstants;
import com.samsung.android.sdk.healthdata.HealthDataStore;
import com.samsung.android.sdk.healthdata.HealthPermissionManager;
import com.samsung.android.sdk.healthdata.HealthResultHolder;

import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class MainActivity extends Activity {

public static final String APP_TAG = "SimpleHealth";

private static MainActivity mInstance = null;
private HealthDataStore mStore;
private HealthConnectionErrorResult mConnError;
private Set<HealthPermissionManager.PermissionKey> mKeySet;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mInstance = this;
    mKeySet = new HashSet<HealthPermissionManager.PermissionKey>();
    mKeySet.add(new HealthPermissionManager.PermissionKey(HealthConstants.StepCount.HEALTH_DATA_TYPE, HealthPermissionManager.PermissionType.READ));
    // Create a HealthDataStore instance and set its listener
    mStore = new HealthDataStore(this, mConnectionListener);
    // Request the connection to the health data store
    mStore.connectService();
}





@Override
public void onDestroy() {
    mStore.disconnectService();
    super.onDestroy();
}




private final HealthDataStore.ConnectionListener mConnectionListener = new HealthDataStore.ConnectionListener() {

    @Override
    public void onConnected() {
        Log.d(APP_TAG, "Health data service is connected.");
        Toast.makeText(MainActivity.this, "Health data service is connected.", Toast.LENGTH_SHORT).show();
        HealthPermissionManager pmsManager = new HealthPermissionManager(mStore);

        try {
            // Check whether the permissions that this application needs are acquired
            Map<HealthPermissionManager.PermissionKey, Boolean> resultMap = pmsManager.isPermissionAcquired(mKeySet);

            if (resultMap.containsValue(Boolean.FALSE)) {
                // Request the permission for reading step counts if it is not acquired
                pmsManager.requestPermissions(mKeySet, MainActivity.this).setResultListener(mPermissionListener);
            } else {
                // Get the current step count and display it
                // ...
            }
        } catch (Exception e) {
            Log.e(APP_TAG, e.getClass().getName() + " - " + e.getMessage());
            Log.e(APP_TAG, "Permission setting fails.");
            Toast.makeText(MainActivity.this, "노연결.", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onConnectionFailed(HealthConnectionErrorResult error) {
        Log.d(APP_TAG, "Health data service is not available.");
        showConnectionFailureDialog(error);
    }

    @Override
    public void onDisconnected() {
        Log.d(APP_TAG, "Health data service is disconnected.");
    }
};



private void showConnectionFailureDialog(HealthConnectionErrorResult error) {

    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    mConnError = error;
    String message = "Connection with Samsung Health is not available";

    if (mConnError.hasResolution()) {
        switch(error.getErrorCode()) {
            case HealthConnectionErrorResult.PLATFORM_NOT_INSTALLED:
                message = "Please install Samsung Health";
                break;
            case HealthConnectionErrorResult.OLD_VERSION_PLATFORM:
                message = "Please upgrade Samsung Health";
                break;
            case HealthConnectionErrorResult.PLATFORM_DISABLED:
                message = "Please enable Samsung Health";
                break;
            case HealthConnectionErrorResult.USER_AGREEMENT_NEEDED:
                message = "Please agree with Samsung Health policy";
                break;
            default:
                message = "Please make Samsung Health available";
                break;
        }
    }

    alert.setMessage(message);

    alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int id) {
            if (mConnError.hasResolution()) {
                mConnError.resolve(mInstance);
            }
        }
    });

    if (error.hasResolution()) {
        alert.setNegativeButton("Cancel", null);
    }

   alert.show();
    setContentView(R.layout.activity_main); // activity_main.xml과 연결

    // 예시로, TextView에 걸음 수 데이터를 설정하여 표시하는 코드
    TextView stepCountTextView = findViewById(R.id.text1); // activity_main.xml의 TextView ID
    int stepCount = 1000; // 예시로 설정 (실제 데이터를 가져와야 함)
    stepCountTextView.setText("Step Count: " + stepCount);
}


private final HealthResultHolder.ResultListener<HealthPermissionManager.PermissionResult> mPermissionListener =
        new HealthResultHolder.ResultListener<HealthPermissionManager.PermissionResult>() {

            @Override
            public void onResult(HealthPermissionManager.PermissionResult result) {
                Log.d(APP_TAG, "Permission callback is received.");
                Map<HealthPermissionManager.PermissionKey, Boolean> resultMap = result.getResultMap();

                if (resultMap.containsValue(Boolean.FALSE)) {
                    // Requesting permission fails
                } else {
                    // Get the current step count and display it
                }
            }
        };

}

Have you read the Health Blogs If you haven’t check them for some tips.

If you have and are still stuck you may want to open a Developer Support Request

Ron
Samsung Developer Relations