Попытка получить доступ к Samsung Health API из службы Android

Добрый вечер,

Я пытаюсь написать приложение для чтения информации с помощью Samsung Health API, но у меня возникают проблемы с подключением API к хранилищу данных.

Я хочу создать Службу, которая будет обращаться к API, чтобы на более позднем этапе запустить Службу, не открывая пользовательский интерфейс. Но я получаю эту ошибку:

java.lang.RuntimeException: Can't create handler inside thread Thread[Thread-9,5,main] that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:205)
at android.os.Handler.<init>(Handler.java:118)
at com.samsung.android.sdk.healthdata.HealthDataStore$ErrorMessageHandler.<init>(HealthDataStore.java:579)
at com.samsung.android.sdk.healthdata.HealthDataStore.<init>(HealthDataStore.java:165)
at rocks.nxfifteen.core.sync.api.samsung.StepCountReader.<init>(StepCountReader.java:44)
at rocks.nxfifteen.core.sync.api.SyncStepDailyTrend.doSync(SyncStepDailyTrend.java:58)
at rocks.nxfifteen.core.sync.api.SyncStepDailyTrend.run(SyncStepDailyTrend.java:42)

SyncService расширяет службу и запускает SyncStepDailyTrend. SyncStepDailyTrend расширяет поток и вызывает класс StepCountReader. StepCountReader является стандартным классом.

Поиск ошибки в Google объясняет ее причину, пытаясь обновить пользовательский интерфейс за пределами основного потока, но все решения включают изменение кода, который пытается использовать пользовательский интерфейс. Так как это делается Samsung SDK, это не вариант. Из того, что я могу сказать, проблема заключается в том, когда я пытаюсь создать объект HealthDataStore. В документации сказано, что она принимает переменную Context, но если я передаю ей что-то, кроме MainActivity, я получаю эту ошибку.

  • Я пытался изменить класс Thread на стандартный класс
  • Я попытался с помощью обработчика и размещения вызова потока из блока, как это:
Handler mainHandler = new Handler(getMainLooper());
mainHandler.post(new Runnable() {
    @Override
    public void run() {
        // call thread class
    }
});

Все мои попытки исправить это. Есть ли способ запустить Activity из Сервиса, не создавая для него пользовательский интерфейс или не перезаписывая пользовательский интерфейс, используемый моей MainActivity - если он открыт -?

Похоже, что Samsung Health не слишком интенсивно использует пользовательский интерфейс, поэтому я изо всех сил пытаюсь найти кого-то, у кого есть подобные проблемы, поэтому любая помощь, которую вы можете предложить, будет принята с благодарностью

0 ответов

Другие вопросы по тегам