unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs,
{$IFDEF ANDROID}
Androidapi.JNIBridge, // Ponte JNI entre Delphi e Java
Androidapi.Helpers, // Funções de auxílio
Androidapi.JNI.JavaTypes, // Tipos Java como JObject, JString
Androidapi.JNI; // Funções e tipos JNI
{$ENDIF}
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
{$IFDEF ANDROID}
function CallJavaPluginAdd(a, b: Integer): Integer;
var
JNIEnv: PJNIEnv; // Ponteiro para o ambiente JNI
JavaClass: JClass; // Usamos JClass do Androidapi.JNI.JavaTypes
JavaMethod: JMethodID; // ID do método Java a ser chamado
ResultValue: JValue; // Valor de retorno do método
begin
// Obter o ambiente JNI
JNIEnv := TJNIResolver.GetJNIEnv;
// Encontrar a classe Java 'com/example/myplugin/Plugin'
JavaClass := JNIEnv^.FindClass(JNIEnv, 'com/example/myplugin/Plugin');
// Verificar se a classe foi encontrada
if JavaClass = nil then
raise Exception.Create('Classe Java não encontrada!');
// Encontrar o método estático 'add' que recebe dois inteiros e retorna um inteiro
JavaMethod := JNIEnv^.GetStaticMethodID(JNIEnv, JavaClass, 'add', '(II)I');
// Verificar se o método foi encontrado
if JavaMethod = nil then
raise Exception.Create('Método add não encontrado!');
// Chamar o método estático 'add' com os parâmetros 'a' e 'b'
ResultValue.I := JNIEnv^.CallStaticIntMethodA(JNIEnv, JavaClass, JavaMethod, [JValue(a), JValue(b)]);
// Retornar o resultado
Result := ResultValue.I;
end;
{$ENDIF}
end.
Pedi o chatgpp o codigo em java para chamar .jar no delphi
package com.example.myplugin;
public class Plugin {
public static int add(int a, int b) {
return a + b;
}
}
Porém no delphi esta dando o erro
[DCC Error] Unit1.pas(34): E2003 Undeclared identifier: 'JClass'
[DCC Error] Unit1.pas(35): E2003 Undeclared identifier: 'JMethodID'
[DCC Error] Unit1.pas(36): E2003 Undeclared identifier: 'JValue'
Alguém ja chamou um .jar com android fmx?