Ir para conteúdo
  • Cadastre-se

dev botao
  • Este tópico foi criado há 156 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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

  • Este tópico foi criado há 156 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...