项目升级AndroidX
gradle sync
c++调用java
build.js 添加
if (Target.Platform == UnrealTargetPlatform.Android)
{
PrivateDependencyModuleNames.AddRange(new string[] { "Launch" });
}
在GameActivitry.java 添加函数 传参
public void AndroidThunkJava_InitName(String url)
{
Log.debug("AndroidThunkJava_InitName");
Log.debug(url);
import android.content.Intent;
import android.net.Uri;
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri content_url = Uri.parse("https://www.baidu.com");
intent.setData(content_url);
startActivity(Intent.createChooser(intent, "请选择浏览器"));
}
调用上面的函数时添加
void UMyUserWidget::callStartFuntion(FString url)
{
#if PLATFORM_ANDROID
if (JNIEnv* Env = FAndroidApplication::GetJavaEnv())
{
jmethodID GetPackageNameMethodID = FJavaWrapper::FindMethod(Env, FJavaWrapper::GameActivityClassID, "AndroidThunkJava_InitName", "(Ljava/lang/String;)V", false);
jstring jskey = Env->NewStringUTF(TCHAR_TO_UTF8(*url));
FJavaWrapper::CallObjectMethod(Env, FJavaWrapper::GameActivityThis, GetPackageNameMethodID,jskey);
}
#endif
}
#有中文时需使用NewStringUTF(TCHAR_TO_UTF8(*url))
#第三方插件注册: MyGame_UPL.xm,需要添加以下代码
if (Target.Platform == UnrealTargetPlatform.Android)
{
// Add UPL to add configrules.txt to our APK
string PluginPath = Utils.MakePathRelativeTo(ModuleDirectory, Target.RelativeEnginePath);
AdditionalPropertiesForReceipt.Add("AndroidPlugin", System.IO.Path.Combine(PluginPath, "MyGame_UPL.xml"));
}