1

我正在与 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)

为特定组件创建意图。

我必须使用这个构造函数,我不能改变它。

我需要把它翻译成 Delphi,但我一直在传递.class类型。现在,我的代码看起来像这样:

function TForm1.GetServiceIntent: JIntent;
begin
  result := TJIntent.JavaClass.init(FContext, ???);
end;

我尝试使用 Java 中的 ClassLoader,但无法访问该loadClass()函数,因为它仅受保护所以包。

我尝试使用Class.forName,但无法Path.class 文件中指定。

我将该.class文件添加为 Delphi 资源文件并通过 加载它TResourceStream,但找不到将此输入转换为 JavaClass引用的解决方案。

4

1 回答 1

3

基于这个答案,我想它应该是这样的

Intent := TJIntent.JavaClass.init(SharedActivityContext,
  TJLang_Class.JavaClass.forName(StringToJString('com.example.ToyVpnService'),
  True, SharedActivity.getClassLoader));
于 2017-08-03T16:24:51.820 回答