将 Java .class 文件传递给 Delphi 构造函数
Pass Java .class file to Delphi Constructor
我正在使用 JNI 来访问 Delphi 10.2 Tokyo 中的 Android 函数。我需要传递一个 .class
类型作为 Delphi 函数构造函数的参数。
原来的Java方法是这样的:
private Intent getServiceIntent() {
return new Intent(this, ToyVpnService.class);
}
来自 Android 构造函数的 Intent
文档:
Intent(Context packageContext, Class<?> cls)
Create an intent for a specific component.
我必须使用这个构造函数,我无法更改它。
我需要将其翻译成 Delphi,但我一直坚持传递 .class
类型。
现在,我的代码看起来像这样:
function TForm1.GetServiceIntent: JIntent;
begin
result := TJIntent.JavaClass.init(FContext, ???);
end;
我尝试使用 Java 中的 ClassLoader,但无法访问 loadClass()
函数,因为它受到保护,因此只能打包。
我尝试使用 Class.forName
,但无法从 .class
文件中指定 Path
。
我将 .class
文件添加为 Delphi 资源文件并通过 TResourceStream
加载它,但找不到将此输入转换为 Java 的解决方案] Class
参考。
根据,我猜应该是
Intent := TJIntent.JavaClass.init(SharedActivityContext,
TJLang_Class.JavaClass.forName(StringToJString('com.example.ToyVpnService'),
True, SharedActivity.getClassLoader));
我正在使用 JNI 来访问 Delphi 10.2 Tokyo 中的 Android 函数。我需要传递一个 .class
类型作为 Delphi 函数构造函数的参数。
原来的Java方法是这样的:
private Intent getServiceIntent() {
return new Intent(this, ToyVpnService.class);
}
来自 Android 构造函数的 Intent
文档:
Intent(Context packageContext, Class<?> cls)
Create an intent for a specific component.
我必须使用这个构造函数,我无法更改它。
我需要将其翻译成 Delphi,但我一直坚持传递 .class
类型。
现在,我的代码看起来像这样:
function TForm1.GetServiceIntent: JIntent;
begin
result := TJIntent.JavaClass.init(FContext, ???);
end;
我尝试使用 Java 中的 ClassLoader,但无法访问 loadClass()
函数,因为它受到保护,因此只能打包。
我尝试使用 Class.forName
,但无法从 .class
文件中指定 Path
。
我将 .class
文件添加为 Delphi 资源文件并通过 TResourceStream
加载它,但找不到将此输入转换为 Java 的解决方案] Class
参考。
根据
Intent := TJIntent.JavaClass.init(SharedActivityContext,
TJLang_Class.JavaClass.forName(StringToJString('com.example.ToyVpnService'),
True, SharedActivity.getClassLoader));