Когда я тестирую приложение, интегрированное с HMS Health Kit, на моем Huawei Mate 30 Pro, почему я не могу узнать количество шагов? - PullRequest
0 голосов
/ 25 мая 2020

Что мне делать, если при запросе количества шагов с помощью соответствующего метода под DataController возвращается код ошибки 50005? (Объем Health Kit, на который я подал заявку на веб-сайте разработчиков Huawei, был одобрен.)

2020-05-26 11: 41: 21.195 17338-17338 / com.hauwei.hmsdemo I / DataManager : ошибка чтения 50005: Неизвестная авторизация ошибка

2020-05-26 11: 41: 21.203 17338-17338 / com.hauwei.hmsdemo I / DataManager:


Следующие строки используются для запроса количества шагов:

public void readSteps(View view) throws ParseException {

    DataCollector dataCollector = new DataCollector.Builder().setPackageName(context)
        .setDataType(DataType.DT_CONTINUOUS_STEPS_DELTA)
        .setDataStreamName("STEPS_DELTA")
        .setDataGenerateType(DataCollector.DATA_TYPE_RAW)
        .build();

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    Date startDate = dateFormat.parse(BEGIN_TIME);
    Date endDate = dateFormat.parse(END_TIME);

    ReadOptions readOptions = new ReadOptions.Builder().read(dataCollector)
        .setTimeRange(startDate.getTime(), endDate.getTime(), TimeUnit.MILLISECONDS)
        .build();

    dataController.read(readOptions).addOnSuccessListener(new OnSuccessListener<ReadReply>() {
        @Override
        public void onSuccess(ReadReply readReply) {
           ……
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(Exception e) {
           ……
        }
    });
}

1 Ответ

0 голосов
/ 27 мая 2020

Нет ничего плохого в строках, которые вы использовали для запроса количества шагов. Проблема заключается в предоставлении авторизации. Следует отметить, что данные, к которым приложение может получить доступ, должны находиться в пределах, предоставленных приложению на веб-сайте Huawei Developers, и в пределах диапазона данных, для которых пользовательское разрешение было предоставлено на стороне устройства.

Что касается этой проблемы, убедитесь, что разрешения на чтение / запись для данных подсчета шагов были предоставлены, когда приложение отображает экран авторизации данных. Вы можете обратиться к следующему коду или к образцу кода для Health Kit по адресу https://developer.huawei.com/consumer/en/doc/development/HMS-Examples/healthkit_Android_sample_code.

private void dataAuthorization() {
    Log.i(TAG, "begin sign in");
    // The data that can be used here and its read/write permissions can only be those you have applied for from the Huawei Developers website.
    List < Scope > scopeList = new ArrayList < > ();
    scopeList.add(new Scope(Scopes.HEALTHKIT_STEP_BOTH));

    HuaweiIdAuthParamsHelper authParamsHelper =
        new HuaweiIdAuthParamsHelper(HuaweiIdAuthParams.DEFAULT_AUTH_REQUEST_PARAM);
    HuaweiIdAuthParams authParams =
        authParamsHelper.setIdToken().setAccessToken().setScopeList(scopeList).createParams();

    final HuaweiIdAuthService authService =
        HuaweiIdAuthManager.getService(this.getApplicationContext(), authParams);

    Task < AuthHuaweiId > authHuaweiIdTask = authService.silentSignIn();

    authHuaweiIdTask.addOnSuccessListener(huaweiId - > {
        ......
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(Exception exception) {
            ......
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...