Ein Problem ist jetzt doch noch aufgetaucht: Wie muss ich eine Methode aufrufen, die einen String zurückgibt?
Ich habe es so probiert:
Delphi-Quellcode:
procedure TForm1.btnStrTestClick(Sender: TObject);
var
cls : JClass;
mid : JMethodID;
result : JString;
instance : JObject;
begin
cls := self.jvm.JniEnv.FindClass('
HelloWorld');
Assert(Assigned(
cls), '
Class HelloWorld not found');
mid := self.jvm.JniEnv.GetMethodID(
cls, '
<init>', '
()V');
Assert(Assigned(mid), '
Constructor not found');
instance := self.jvm.JniEnv.NewObject(
cls, mid, []);
mid := self.jvm.JniEnv.GetMethodID(
cls, '
strTest', '
()Ljava/lang/String');
Assert(Assigned(mid), '
Method "strTest" not found');
result := self.jvm.JniEnv.CallObjectMethod(instance, mid, []);
ShowMessage('
Result = ' +
String(result));
end;
Aber da findet er die Methode nicht:
Code:
public String strTest()
{
return "Hello, world";
}
Hat sich auch erledigt. Sio geht es:
Delphi-Quellcode:
mid := self.jvm.JniEnv.GetMethodID(
cls, '
strTest', '
()Ljava/lang/String;');
Assert(Assigned(mid), '
Method "strTest" not found');
result := self.jvm.JniEnv.CallObjectMethod(instance, mid, []);
ShowMessage('
Result = ' + jvm.JniEnv.JStringToString(result));