API/Autodoc/Files/AndroidJavaObject.h.en.md
Namespaces
| Name |
|---|
Classes
| Name | |
|---|---|
| class | RuStoreSDK::AndroidJavaObject |
Source code
// Copyright Epic Games, Inc. All Rights Reserved.
#include "AndroidJavaLog.h"
namespace RuStoreSDK
{
class RUSTORECORE_API AndroidJavaObject : public IAndroidClasses
{
private:
FString className = "";
FString ExtractName();
bool bIsAttachThread = false;
bool bIsGlobalRef = true;
#if PLATFORM_ANDROID
JNIEnv* env = nullptr;
jclass javaClass = nullptr;
jobject javaObject = nullptr;
static JavaVM* CurrentJavaVM()
{
JavaVM* CurrentJavaVM = nullptr;
FAndroidApplication::GetJavaEnv()->GetJavaVM(&CurrentJavaVM);
return CurrentJavaVM;
}
#endif
public:
AndroidJavaObject(FString className, bool bAsGlobalRef = true);
AndroidJavaObject(FString className, long cppPointer, bool bAsGlobalRef = true);
#if PLATFORM_ANDROID
AndroidJavaObject(jthrowable throwable);
AndroidJavaObject(jobject javaObject);
AndroidJavaObject(jobject javaObject, FString asInterface);
AndroidJavaObject(jclass javaClass, jobject javaObject);
jobject GetJObject();
#endif
virtual ~AndroidJavaObject();
FString GetName() override;
static AndroidJavaObject* GetStaticAJObject(FString fieldName, FString className);
template<typename T>
T* Get(FString fieldName);
int GetInt(FString fieldName);
long GetLong(FString fieldName);
bool GetBool(FString fieldName);
FString GetFString(FString fieldName);
int GetEnum(FString fieldName, FString signature);
TArray<uint8>* GetByteArray(FString fieldName);
AndroidJavaObject* GetAJObject(FString fieldName, FString signature = "");
AndroidJavaObject* GetAJObjectArrayElement(int i);
FString GetFStringArrayElement(int i);
FString ConvertToFString();
void SetInterfaceName(FString asInterface);
bool AttachCurrentThread();
AndroidJavaObject* UpdateToGlobalRef();
FString CallJavaClassFString(FString methodName);
template<typename... Args>
void CallVoid(FString methodName, Args... args)
{
#if PLATFORM_ANDROID
FString methodSignature = JavaMethodSignature::MakeVoid(args...);
#ifdef RuStoreDebug
_LogInfo(RuStoreDebug, methodSignature);
#endif
jmethodID javaMethodID = FJavaWrapper::FindMethod(env, javaClass, TCHAR_TO_ANSI(*methodName), TCHAR_TO_ANSI(*methodSignature), false);
FJavaWrapper::CallVoidMethod(env, javaObject, javaMethodID, JavaTypeConverter::SetValue(env, args)...);
#endif
}
template<typename... Args>
unsigned char CallByte(FString methodName, Args... args)
{
unsigned char result = 0;
#if PLATFORM_ANDROID
FString methodSignature = JavaMethodSignature::MakeByte(args...);
jmethodID javaMethodID = FJavaWrapper::FindMethod(env, javaClass, TCHAR_TO_ANSI(*methodName), TCHAR_TO_ANSI(*methodSignature), false);
#ifdef RuStoreDebug
_LogInfo(RuStoreDebug, methodSignature);
#endif
result = (unsigned char)env->CallByteMethod(javaObject, javaMethodID, JavaTypeConverter::SetValue(env, args)...);
#endif
return result;
}
template<typename... Args>
int CallInt(FString methodName, Args... args)
{
int result = 0;
#if PLATFORM_ANDROID
FString methodSignature = JavaMethodSignature::MakeInt(args...);
jmethodID javaMethodID = FJavaWrapper::FindMethod(env, javaClass, TCHAR_TO_ANSI(*methodName), TCHAR_TO_ANSI(*methodSignature), false);
#ifdef RuStoreDebug
_LogInfo(RuStoreDebug, methodSignature);
#endif
result = (int)env->CallIntMethod(javaObject, javaMethodID, JavaTypeConverter::SetValue(env, args)...);
#endif
return result;
}
template<typename... Args>
long CallLong(FString methodName, Args... args)
{
long result = 0;
#if PLATFORM_ANDROID
FString methodSignature = JavaMethodSignature::MakeLong(args...);
jmethodID javaMethodID = FJavaWrapper::FindMethod(env, javaClass, TCHAR_TO_ANSI(*methodName), TCHAR_TO_ANSI(*methodSignature), false);
#ifdef RuStoreDebug
_LogInfo(RuStoreDebug, methodSignature);
#endif
result = (long)env->CallLongMethod(javaObject, javaMethodID, JavaTypeConverter::SetValue(env, args)...);
#endif
return result;
}
template<typename... Args>
float CallFloat(FString methodName, Args... args)
{
float result = 0;
#if PLATFORM_ANDROID
FString methodSignature = JavaMethodSignature::MakeFloat(args...);
jmethodID javaMethodID = FJavaWrapper::FindMethod(env, javaClass, TCHAR_TO_ANSI(*methodName), TCHAR_TO_ANSI(*methodSignature), false);
#ifdef RuStoreDebug
_LogInfo(RuStoreDebug, methodSignature);
#endif
result = (float)env->CallFloatMethod(javaObject, javaMethodID, JavaTypeConverter::SetValue(env, args)...);
#endif
return result;
}
template<typename... Args>
float CallDouble(FString methodName, Args... args)
{
double result = 0;
#if PLATFORM_ANDROID
FString methodSignature = JavaMethodSignature::MakeDouble(args...);
jmethodID javaMethodID = FJavaWrapper::FindMethod(env, javaClass, TCHAR_TO_ANSI(*methodName), TCHAR_TO_ANSI(*methodSignature), false);
#ifdef RuStoreDebug
_LogInfo(RuStoreDebug, methodSignature);
#endif
result = (double)env->CallDoubleMethod(javaObject, javaMethodID, JavaTypeConverter::SetValue(env, args)...);
#endif
return result;
}
template<typename... Args>
bool CallBool(FString methodName, Args... args)
{
bool result = false;
#if PLATFORM_ANDROID
FString methodSignature = JavaMethodSignature::MakeBool(args...);
jmethodID javaMethodID = FJavaWrapper::FindMethod(env, javaClass, TCHAR_TO_ANSI(*methodName), TCHAR_TO_ANSI(*methodSignature), false);
#ifdef RuStoreDebug
_LogInfo(RuStoreDebug, methodSignature);
#endif
result = (bool)env->CallBooleanMethod(javaObject, javaMethodID, JavaTypeConverter::SetValue(env, args)...);
#endif
return result;
}
template<typename... Args>
FString CallFString(FString methodName, Args... args)
{
FString result = "";
#if PLATFORM_ANDROID
FString methodSignature = JavaMethodSignature::MakeFString(args...);
jmethodID javaMethodID = FJavaWrapper::FindMethod(env, javaClass, TCHAR_TO_ANSI(*methodName), TCHAR_TO_ANSI(*methodSignature), false);
#ifdef RuStoreDebug
_LogInfo(RuStoreDebug, methodSignature);
#endif
jstring strResult = (jstring)FJavaWrapper::CallObjectMethod(env, javaObject, javaMethodID, JavaTypeConverter::SetValue(env, args)...);
result = FJavaHelper::FStringFromParam(env, strResult);
#endif
return result;
}
template<typename... Args>
TArray<uint8>* CallByteArray(FString methodName, Args... args)
{
TArray<uint8>* result = nullptr;
#if PLATFORM_ANDROID
FString methodSignature = JavaMethodSignature::MakeByteArray(args...);
jmethodID javaMethodID = FJavaWrapper::FindMethod(env, javaClass, TCHAR_TO_ANSI(*methodName), TCHAR_TO_ANSI(*methodSignature), false);
#ifdef RuStoreDebug
_LogInfo(RuStoreDebug, methodSignature);
#endif
jbyteArray jArray = (jbyteArray)FJavaWrapper::CallObjectMethod(env, javaObject, javaMethodID, JavaTypeConverter::SetValue(env, args)...);
if (jArray != nullptr)
{
int length = env->GetArrayLength(jArray);
jbyte* data = env->GetByteArrayElements(jArray, nullptr);
result = new TArray<uint8>();
for (int i = 0; i < length; i++)
{
result->Add(static_cast<uint8>(data[i]));
}
env->ReleaseByteArrayElements(jArray, data, 0);
}
#endif
return result;
}
template<typename... Args>
AndroidJavaObject* CallAJClass(FString methodName, Args... args)
{
AndroidJavaObject* result = nullptr;
#if PLATFORM_ANDROID
FString methodSignature = JavaMethodSignature::MakeAJClass(args...);
jmethodID javaMethodID = FJavaWrapper::FindMethod(env, javaClass, TCHAR_TO_ANSI(*methodName), TCHAR_TO_ANSI(*methodSignature), false);
#ifdef RuStoreDebug
_LogInfo(RuStoreDebug, methodSignature);
#endif
jobject localRef = FJavaWrapper::CallObjectMethod(env, javaObject, javaMethodID, JavaTypeConverter::SetValue(env, args)...);
if (localRef != nullptr)
{
result = new AndroidJavaObject(localRef);
result->UpdateToGlobalRef();
}
#endif
return result;
}
template<typename... Args>
AndroidJavaObject* CallAJObject(FString methodName, Args... args)
{
AndroidJavaObject* result = nullptr;
#if PLATFORM_ANDROID
FString methodSignature = JavaMethodSignature::MakeAJObject(args...);
jmethodID javaMethodID = FJavaWrapper::FindMethod(env, javaClass, TCHAR_TO_ANSI(*methodName), TCHAR_TO_ANSI(*methodSignature), false);
#ifdef RuStoreDebug
_LogInfo(RuStoreDebug, methodSignature);
#endif
jobject localRef = (jobject)FJavaWrapper::CallObjectMethod(env, javaObject, javaMethodID, JavaTypeConverter::SetValue(env, args)...);
if (localRef != nullptr)
{
result = new AndroidJavaObject(localRef);
result->UpdateToGlobalRef();
}
#endif
return result;
}
template<typename... Args>
AndroidJavaObject* CallSpecificAJObject(FString methodName, FString signature, Args... args)
{
AndroidJavaObject* result = nullptr;
#if PLATFORM_ANDROID
FString methodSignature = JavaMethodSignature::MakeSpecificAJObject(signature, args...);
jmethodID javaMethodID = FJavaWrapper::FindMethod(env, javaClass, TCHAR_TO_ANSI(*methodName), TCHAR_TO_ANSI(*methodSignature), false);
#ifdef RuStoreDebug
_LogInfo(RuStoreDebug, methodSignature);
#endif
jobject localRef = (jobject)FJavaWrapper::CallObjectMethod(env, javaObject, javaMethodID, JavaTypeConverter::SetValue(env, args)...);
if (localRef != nullptr)
{
result = new AndroidJavaObject(localRef);
result->UpdateToGlobalRef();
}
#endif
return result;
}
};
}
- Страницы
- AndroidJavaClass.cpp.en
- AndroidJavaClass.cpp
- AndroidJavaClass.h.en
- AndroidJavaClass.h
- AndroidJavaLog.cpp.en
- AndroidJavaLog.cpp
- AndroidJavaLog.h.en
- AndroidJavaLog.h
- AndroidJavaObject.cpp.en
- AndroidJavaObject.cpp
- AndroidJavaObject.h.en
- AndroidJavaObject.h
- AsyncNodes.en
- AsyncNodes
- AsyncNodes_Files.en
- AsyncNodes_Files
- CallbackHandler.cpp.en
- CallbackHandler.cpp
- CallbackHandler.h.en
- CallbackHandler.h
- EURuStoreUpdateBehaviour.h.en
- EURuStoreUpdateBehaviour.h
- ErrorConverter.cpp.en
- ErrorConverter.cpp
- ErrorConverter.h.en
- ErrorConverter.h
- ErrorListener.cpp.en
- ErrorListener.cpp
- ErrorListener.h.en
- ErrorListener.h
- FURuStoreError.h.en
- FURuStoreError.h
- FURuStoreFeatureAvailabilityResult.h.en
- FURuStoreFeatureAvailabilityResult.h
- FURuStoreRemoteConfig.h.en
- FURuStoreRemoteConfig.h
- FeatureAvailabilityListenerImpl.cpp.en
- FeatureAvailabilityListenerImpl.cpp
- FeatureAvailabilityListenerImpl.h.en
- FeatureAvailabilityListenerImpl.h
- GetRemoteConfigListenerImpl.cpp.en
- GetRemoteConfigListenerImpl.cpp
- GetRemoteConfigListenerImpl.h.en
- GetRemoteConfigListenerImpl.h
- IAndroidClasses.h.en
- IAndroidClasses.h
- IRuStoreListener.java.en
- IRuStoreListener.java
- Java.en
- Java
- JavaActivity.cpp.en
- JavaActivity.cpp
- JavaActivity.h.en
- JavaActivity.h
- JavaApplication.cpp.en
- JavaApplication.cpp
- JavaApplication.h.en
- JavaApplication.h
- JavaMethodSignature.cpp.en
- JavaMethodSignature.cpp
- JavaMethodSignature.h.en
- JavaMethodSignature.h
- JavaTypeConverter.cpp.en
- JavaTypeConverter.cpp
- JavaTypeConverter.h.en
- JavaTypeConverter.h
- Java_Files.en
- Java_Files
- Plugins.en
- Plugins
- Private.en
- Private
- Private_Files.en
- Private_Files
- Public.en
- Public
- Public_Files.en
- Public_Files
- RemoteConfigClientEventListenerImpl.cpp.en
- RemoteConfigClientEventListenerImpl.cpp
- RemoteConfigClientEventListenerImpl.h.en
- RemoteConfigClientEventListenerImpl.h
- RemoteConfigClientEventListenerWrapper.java.en
- RemoteConfigClientEventListenerWrapper.java
- ResponseListener.h.en
- ResponseListener.h
- RuStoreCore.Build.cs.en
- RuStoreCore.Build.cs
- RuStoreCore.cpp.en
- RuStoreCore.cpp
- RuStoreCore.h.en
- RuStoreCore.h
- RuStoreCoreUtils.java.en
- RuStoreCoreUtils.java
- RuStoreCore_Files.en
- RuStoreCore_Files
- RuStoreImage.java.en
- RuStoreImage.java
- RuStoreListener.cpp.en
- RuStoreListener.cpp
- RuStoreListener.h.en
- RuStoreListener.h
- RuStoreRemoteConfig.Build.cs.en
- RuStoreRemoteConfig.Build.cs
- RuStoreRemoteConfig.cpp.en
- RuStoreRemoteConfig.cpp
- RuStoreRemoteConfig.h.en
- RuStoreRemoteConfig.h
- RuStoreRemoteConfig_Files.en
- RuStoreRemoteConfig_Files
- SimpleResponseListener.cpp.en
- SimpleResponseListener.cpp
- SimpleResponseListener.h.en
- SimpleResponseListener.h
- SimpleResponseListenerT.h.en
- SimpleResponseListenerT.h
- Source.en
- Source
- Source_Files.en
- Source_Files
- UGetRemoteConfigNode.cpp.en
- UGetRemoteConfigNode.cpp
- UGetRemoteConfigNode.h.en
- UGetRemoteConfigNode.h
- URuStoreConfigRequestParameterProvider.cpp.en
- URuStoreConfigRequestParameterProvider.cpp
- URuStoreConfigRequestParameterProvider.h.en
- URuStoreConfigRequestParameterProvider.h
- URuStoreCore.cpp.en
- URuStoreCore.cpp
- URuStoreCore.h.en
- URuStoreCore.h
- URuStoreRemoteConfig.cpp.en
- URuStoreRemoteConfig.cpp
- URuStoreRemoteConfig.h.en
- URuStoreRemoteConfig.h
- URuStoreRemoteConfigClient.cpp.en
- URuStoreRemoteConfigClient.cpp
- URuStoreRemoteConfigClient.h.en
- URuStoreRemoteConfigClient.h
- URuStoreRemoteConfigClientEventListener.cpp.en
- URuStoreRemoteConfigClientEventListener.cpp
- URuStoreRemoteConfigClientEventListener.h.en
- URuStoreRemoteConfigClientEventListener.h
- UTextureDownloader.cpp.en
- UTextureDownloader.cpp
- UTextureDownloader.h.en
- UTextureDownloader.h
- UnrealPlayerImpl.cpp.en
- UnrealPlayerImpl.cpp
- UnrealPlayerImpl.h.en
- UnrealPlayerImpl.h
- UnrealPlayerWrapper.java.en
- UnrealPlayerWrapper.java
- docs.en
- docs
- unreal_example.en
- unreal_example
- AndroidJavaClass.cpp.en
- AndroidJavaClass.cpp
- AndroidJavaClass.h.en
- AndroidJavaClass.h
- AndroidJavaLog.cpp.en
- AndroidJavaLog.cpp
- AndroidJavaLog.h.en
- AndroidJavaLog.h
- AndroidJavaObject.cpp.en
- AndroidJavaObject.cpp
- AndroidJavaObject.h.en
- AndroidJavaObject.h
- AsyncNodes.en
- AsyncNodes
- AsyncNodes_Files.en
- AsyncNodes_Files
- CallbackHandler.cpp.en
- CallbackHandler.cpp
- CallbackHandler.h.en
- CallbackHandler.h
- EURuStoreUpdateBehaviour.h.en
- EURuStoreUpdateBehaviour.h
- ErrorConverter.cpp.en
- ErrorConverter.cpp
- ErrorConverter.h.en
- ErrorConverter.h
- ErrorListener.cpp.en
- ErrorListener.cpp
- ErrorListener.h.en
- ErrorListener.h
- FURuStoreError.h.en
- FURuStoreError.h
- FURuStoreFeatureAvailabilityResult.h.en
- FURuStoreFeatureAvailabilityResult.h
- FURuStoreRemoteConfig.h.en
- FURuStoreRemoteConfig.h
- FeatureAvailabilityListenerImpl.cpp.en
- FeatureAvailabilityListenerImpl.cpp
- FeatureAvailabilityListenerImpl.h.en
- FeatureAvailabilityListenerImpl.h
- GetRemoteConfigListenerImpl.cpp.en
- GetRemoteConfigListenerImpl.cpp
- GetRemoteConfigListenerImpl.h.en
- GetRemoteConfigListenerImpl.h
- IAndroidClasses.h.en
- IAndroidClasses.h
- IRuStoreListener.java.en
- IRuStoreListener.java
- Java.en
- Java
- JavaActivity.cpp.en
- JavaActivity.cpp
- JavaActivity.h.en
- JavaActivity.h
- JavaApplication.cpp.en
- JavaApplication.cpp
- JavaApplication.h.en
- JavaApplication.h
- JavaMethodSignature.cpp.en
- JavaMethodSignature.cpp
- JavaMethodSignature.h.en
- JavaMethodSignature.h
- JavaTypeConverter.cpp.en
- JavaTypeConverter.cpp
- JavaTypeConverter.h.en
- JavaTypeConverter.h
- Java_Files.en
- Java_Files
- Plugins.en
- Plugins
- Private.en
- Private
- Private_Files.en
- Private_Files
- Public.en
- Public
- Public_Files.en
- Public_Files
- RemoteConfigClientEventListenerImpl.cpp.en
- RemoteConfigClientEventListenerImpl.cpp
- RemoteConfigClientEventListenerImpl.h.en
- RemoteConfigClientEventListenerImpl.h
- RemoteConfigClientEventListenerWrapper.java.en
- RemoteConfigClientEventListenerWrapper.java
- ResponseListener.h.en
- ResponseListener.h
- RuStoreCore.Build.cs.en
- RuStoreCore.Build.cs
- RuStoreCore.cpp.en
- RuStoreCore.cpp
- RuStoreCore.h.en
- RuStoreCore.h
- RuStoreCoreUtils.java.en
- RuStoreCoreUtils.java
- RuStoreCore_Files.en
- RuStoreCore_Files
- RuStoreImage.java.en
- RuStoreImage.java
- RuStoreListener.cpp.en
- RuStoreListener.cpp
- RuStoreListener.h.en
- RuStoreListener.h
- RuStoreRemoteConfig.Build.cs.en
- RuStoreRemoteConfig.Build.cs
- RuStoreRemoteConfig.cpp.en
- RuStoreRemoteConfig.cpp
- RuStoreRemoteConfig.h.en
- RuStoreRemoteConfig.h
- RuStoreRemoteConfig_Files.en
- RuStoreRemoteConfig_Files
- SimpleResponseListener.cpp.en
- SimpleResponseListener.cpp
- SimpleResponseListener.h.en
- SimpleResponseListener.h
- SimpleResponseListenerT.h.en
- SimpleResponseListenerT.h
- Source.en
- Source
- Source_Files.en
- Source_Files
- UGetRemoteConfigNode.cpp.en
- UGetRemoteConfigNode.cpp
- UGetRemoteConfigNode.h.en
- UGetRemoteConfigNode.h
- URuStoreConfigRequestParameterProvider.cpp.en
- URuStoreConfigRequestParameterProvider.cpp
- URuStoreConfigRequestParameterProvider.h.en
- URuStoreConfigRequestParameterProvider.h
- URuStoreCore.cpp.en
- URuStoreCore.cpp
- URuStoreCore.h.en
- URuStoreCore.h
- URuStoreRemoteConfig.cpp.en
- URuStoreRemoteConfig.cpp
- URuStoreRemoteConfig.h.en
- URuStoreRemoteConfig.h
- URuStoreRemoteConfigClient.cpp.en
- URuStoreRemoteConfigClient.cpp
- URuStoreRemoteConfigClient.h.en
- URuStoreRemoteConfigClient.h
- URuStoreRemoteConfigClientEventListener.cpp.en
- URuStoreRemoteConfigClientEventListener.cpp
- URuStoreRemoteConfigClientEventListener.h.en
- URuStoreRemoteConfigClientEventListener.h
- UTextureDownloader.cpp.en
- UTextureDownloader.cpp
- UTextureDownloader.h.en
- UTextureDownloader.h
- UnrealPlayerImpl.cpp.en
- UnrealPlayerImpl.cpp
- UnrealPlayerImpl.h.en
- UnrealPlayerImpl.h
- UnrealPlayerWrapper.java.en
- UnrealPlayerWrapper.java
- docs.en
- docs
- unreal_example.en
- unreal_example