Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

Postado
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?

Postado

Eu vi aqui na pasta do delphi

Até rodei o comando para exportar

Java2OP.exe -jar c:\java\myjavalibrary.jar

no cmd fez isto, porém nao sei aconteceria! Se iria gerar alguma unit mas gerou nada

C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\converters\java2op>Java2OP.exe -jar c:\java\myjavalibrary.jar
Embarcadero Java2OP Version 12.16582 ($Rev: 95842 $)
Copyright(c) 2016-2020 Embarcadero Technologies, Inc.
Parsing xml: C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\converters\java2op\bootclasses.xml
Parsing jar: c:\java\myjavalibrary.jar
Olhei em https://docwiki.embarcadero.com/RADStudio/Athens/en/Java2OP.exe,_the_Native_Bridge_File_Generator_for_Android

Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.