// Copyright (c) 2022 Sentry. All Rights Reserved. #include "SentryEventAndroid.h" #include "SentryMessageAndroid.h" #include "Infrastructure/SentryConvertorsAndroid.h" #include "Infrastructure/SentryJavaClasses.h" SentryEventAndroid::SentryEventAndroid() : FSentryJavaObjectWrapper(SentryJavaClasses::SentryEvent, "()V") { SetupClassMethods(); } SentryEventAndroid::SentryEventAndroid(jobject event) : FSentryJavaObjectWrapper(SentryJavaClasses::SentryEvent, event) { SetupClassMethods(); } void SentryEventAndroid::SetupClassMethods() { SetMessageMethod = GetMethod("setMessage", "(Lio/sentry/protocol/Message;)V"); GetMessageMethod = GetMethod("getMessage", "()Lio/sentry/protocol/Message;"); SetLevelMethod = GetMethod("setLevel", "(Lio/sentry/SentryLevel;)V"); GetLevelMethod = GetMethod("getLevel", "()Lio/sentry/SentryLevel;"); IsCrashMethod = GetMethod("isCrashed", "()Z"); } void SentryEventAndroid::SetMessage(const FString& message) { CallMethod(SetMessageMethod, SentryMessageAndroid(message).GetJObject()); } FString SentryEventAndroid::GetMessage() const { auto message = CallObjectMethod(GetMessageMethod); return SentryMessageAndroid(*message).ToString(); } void SentryEventAndroid::SetLevel(ESentryLevel level) { CallMethod(SetLevelMethod, SentryConvertorsAndroid::SentryLevelToNative(level)->GetJObject()); } ESentryLevel SentryEventAndroid::GetLevel() const { auto level = CallObjectMethod(GetLevelMethod); return SentryConvertorsAndroid::SentryLevelToUnreal(*level); } bool SentryEventAndroid::IsCrash() const { return CallMethod(IsCrashMethod); } bool SentryEventAndroid::IsAnr() const { return CallStaticMethod(SentryJavaClasses::SentryBridgeJava, "isAnrEvent", "(Lio/sentry/SentryEvent;)Z", GetJObject()); }