В настоящее время это ошибка в Java SDK, когда, как вы указали, вызов аутентификации через IAM все еще выполняется в главном потоке.Эта ошибка в настоящее время задокументирована здесь .
Тем временем, в качестве обходного пути, вы можете явно обернуть вызов в новый поток.Один из способов сделать это - AsyncTask
.Ниже приведен пример:
private class MessageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
MessageInput input = new MessageInput.Builder()
.messageType("text")
.text(params[0])
.build();
MessageOptions options = new MessageOptions.Builder(assistantId, sessionId)
.input(input)
.build();
assistant.message(options).enqueue(new ServiceCallback<MessageResponse>() {
@Override
public void onResponse(MessageResponse response) {
Log.d("Response: ", response.toString());
}
@Override
public void onFailure(Exception e) {}
});
return "sent message successfully";
}
}
, где вы просто называете это так:
new MessageTask().execute("This is an example message");