5#include "GenericPlatform/GenericPlatformMisc.h"
9#define Log(pmt, ...) UE_LOG(LogPixoLauncherSubsystem, Log, TEXT(pmt), ##__VA_ARGS__)
10#define Warn(pmt, ...) UE_LOG(LogPixoLauncherSubsystem, Warning, TEXT(pmt), ##__VA_ARGS__)
11#define Error(pmt, ...) UE_LOG(LogPixoLauncherSubsystem, Error, TEXT(pmt), ##__VA_ARGS__)
12#define Fatal(pmt, ...) UE_LOG(LogPixoLauncherSubsystem, Fatal, TEXT(pmt), ##__VA_ARGS__)
23 if (JNIEnv* Env = FAndroidApplication::GetJavaEnv())
25 IsApplicationInstalledFunction = FJavaWrapper::FindMethod(Env, FJavaWrapper::GameActivityClassID,
"AndroidThunkJava_IsPackageInstalled",
"(Ljava/lang/String;)Z",
false);
26 LaunchApplicationFunction = FJavaWrapper::FindMethod(Env, FJavaWrapper::GameActivityClassID,
"AndroidThunkJava_Launch",
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z",
false);
27 GetApplicationExtraFunction = FJavaWrapper::FindMethod(Env, FJavaWrapper::GameActivityClassID,
"AndroidThunkJava_GetApplicationExtra",
"(Ljava/lang/String;)Ljava/lang/String;",
false);
28 GetDeviceSerialNumberFunction = FJavaWrapper::FindMethod(Env, FJavaWrapper::GameActivityClassID,
"AndroidThunkJava_GetDeviceSerialNumber",
"()Ljava/lang/String;",
false);
29 GetDeviceMacAddressFunction = FJavaWrapper::FindMethod(Env, FJavaWrapper::GameActivityClassID,
"AndroidThunkJava_GetMacAddress",
"()Ljava/lang/String;",
false);
38 if (JNIEnv* Env = FAndroidApplication::GetJavaEnv())
40 auto PackageNameArg = FJavaHelper::ToJavaString(Env, ApplicationName);
41 bResult = FJavaWrapper::CallBooleanMethod(Env, FJavaWrapper::GameActivityThis, FJavaWrapper::AndroidThunkJava_IsPackageInstalled, *PackageNameArg);
44 Log(
"UPixoLauncherSubsystem::IsApplicationInstalledFunction: %d", bResult);
53 if (JNIEnv* Env = FAndroidApplication::GetJavaEnv())
55 auto ApplicationNameArg = FJavaHelper::ToJavaString(Env, ApplicationName);
56 auto ExtraKeyArg = FJavaHelper::ToJavaString(Env, ExtraKey);
57 auto ExtraValueArg = FJavaHelper::ToJavaString(Env, ExtraValue);
58 bResult = FJavaWrapper::CallBooleanMethod(Env, FJavaWrapper::GameActivityThis, LaunchApplicationFunction, *ApplicationNameArg, *ExtraKeyArg, *ExtraValueArg);
61 Log(
"UPixoLauncherSubsystem::LaunchApplication: %s, %s : %s", *ApplicationName, *ExtraKey, *ExtraValue);
68 FString ReturnedExtraValue = FString(
"");
70 if (JNIEnv* Env = FAndroidApplication::GetJavaEnv())
72 auto ExtraKeyArg = FJavaHelper::ToJavaString(Env, ExtraKey);
73 auto JavaKeyValue = (jstring)FJavaWrapper::CallObjectMethod(Env, FJavaWrapper::GameActivityThis, GetApplicationExtraFunction, *ExtraKeyArg);
74 ReturnedExtraValue = FJavaHelper::FStringFromLocalRef(Env, JavaKeyValue);
77 Log(
"UPixoLauncherSubsystem::GetApplicationExtra: %s", *ReturnedExtraValue);
79 return ReturnedExtraValue;
84 FString ReturnedExtraValue = FString(
"");
86 if (JNIEnv* Env = FAndroidApplication::GetJavaEnv())
88 auto JavaKeyValue = (jstring)FJavaWrapper::CallObjectMethod(Env, FJavaWrapper::GameActivityThis, GetDeviceSerialNumberFunction);
89 ReturnedExtraValue = FJavaHelper::FStringFromLocalRef(Env, JavaKeyValue);
92 Log(
"UPixoLauncherSubsystem::GetDeviceSerialNumber: %s", *ReturnedExtraValue);
94 ReturnedExtraValue = TEXT(
"");
96 return ReturnedExtraValue;
101 FString ReturnedExtraValue = FString(
"");
103 if (JNIEnv* Env = FAndroidApplication::GetJavaEnv())
105 auto JavaKeyValue = (jstring)FJavaWrapper::CallObjectMethod(Env, FJavaWrapper::GameActivityThis, GetDeviceMacAddressFunction);
106 ReturnedExtraValue = FJavaHelper::FStringFromLocalRef(Env, JavaKeyValue);
109 Log(
"UPixoLauncherSubsystem::GetDeviceMacAddress: %s", *ReturnedExtraValue);
111 ReturnedExtraValue = FGenericPlatformMisc::GetMacAddressString();
113 return ReturnedExtraValue;
DEFINE_LOG_CATEGORY_STATIC(LogPixoLauncherSubsystem, Log, All)
FString GetDeviceSerialNumber()
UFUNCTION(BlueprintCallable, Category = "PixoVR|Launcher")
FString GetApplicationExtra(const FString &ExtraKey)
UFUNCTION(BlueprintCallable, Category = "PixoVR|Launcher")
FString GetDeviceMacAddress()
UFUNCTION(BlueprintCallable, Category = "PixoVR|Launcher")
bool IsApplicationInstalled(const FString &ApplicationName)
UFUNCTION(BlueprintCallable, Category = "PixoVR|Launcher")
bool LaunchApplication(const FString &ApplicationName, const FString &ExtraKey, const FString &ExtraValue)
UFUNCTION(BlueprintCallable, Category = "PixoVR|Launcher")
void Initialize(FSubsystemCollectionBase &Collection)