【发布时间】:2017-08-03 14:22:56
【问题描述】:
我正在使用 JNI 来访问 Delphi 10.2 Tokyo 中的 Android 功能。我需要传递一个 .class 类型作为 Delphi 函数构造函数的参数。
原来的Java方法是这样的:
private Intent getServiceIntent() {
return new Intent(this, ToyVpnService.class);
}
来自Intent 构造函数的 Android 文档:
Intent(Context packageContext, Class<?> cls)为特定组件创建意图。
我必须使用这个构造函数,我不能改变它。
我需要将其翻译为 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 引用的解决方案。
【问题讨论】:
-
我的第一个问题是为什么在 Delphi 程序中需要 java 类文件?
-
@rabbit, FireMonkey.
-
因为 JIntent 的构造函数需要这个。来自 Java Doc:“Intent(Context packageContext, Class> cls) 为特定组件创建意图。”developer.android.com/reference/android/content/Intent.html 我必须使用此方法,并且无法更改。
-
ToyVpnService.class不是对 Java.class文件的引用,它是对 Java 类 的引用。
标签: java android delphi java-native-interface delphi-10.2-tokyo