AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Android: Klasse aus .jar benutzen

Ein Thema von bcvs · begonnen am 26. Jul 2024 · letzter Beitrag vom 2. Aug 2024
Antwort Antwort
bcvs

Registriert seit: 16. Jun 2011
690 Beiträge
 
Delphi 12 Athens
 
#1

Android: Klasse aus .jar benutzen

  Alt 26. Jul 2024, 11:28
Hallo zusammen, ich habe muss .jar-Datei in meine App einbinden. Zunächst habe ich dieses Bridge-File erzeugt und die .jar als Bibliothek eingebunden, wie hier beschrieben:
http://docwiki.embarcadero.com/RADSt...o_Android_Apps

So weit, so gut.

Jetzt geht es darum die Klassen zu verwenden. Ich will zunächst mal die function isNfcEnabled aufrufen. Die entsprechende Klasse ist in der Bridge-Datei so definiert:

Delphi-Quellcode:
  JCardlinkClass = interface(JICardlinkCallbackClass)
    ['{62BD9E24-88F0-4FD3-BD57-65479E39241E}']
    {class} function _GetINSTANCE: JCardlink; cdecl;
    {class} function getDebug: Boolean; cdecl;
    {class} function getLogLevel: JLogLevel; cdecl;
    {class} function getSmsHack: Boolean; cdecl;
    {class} function getState: JCardlinkState; cdecl;
    {class} procedure initialize(string_: JString; iCardlinkCallback: JICardlinkCallback; string_1: JString; string_2: JString); cdecl;
    {class} function isNfcEnabled(context: JContext): Boolean; cdecl;
    {class} function isNfcHardwareAvailable(context: JContext): Boolean; cdecl;
    {class} procedure requestSmsToken(string_: JString; string_1: JString; string_2: JString; string_3: JString); cdecl;
    {class} procedure setDebug(b: Boolean); cdecl;
    {class} procedure setLogLevel(logLevel: JLogLevel); cdecl;
    {class} procedure setSmsHack(b: Boolean); cdecl;
    {class} procedure shutdown; cdecl;
    {class} procedure startScan(string_: JString; activity: JActivity); cdecl;
    {class} procedure verifySmsToken(string_: JString); cdecl;
    {class} property INSTANCE: JCardlink read _GetINSTANCE;
  end;

  [JavaSignature('de/...../Cardlink')]
  JCardlink = interface(JICardlinkCallback)
    ['{46B08D27-AA20-4A0D-971E-7405E46E0787}']
    procedure onError(cardlinkError: JCardlinkError; string_: JString; cardlinkAction: JCardlinkAction); cdecl;
    procedure onPrescriptionBundles(list: JList); cdecl;
    procedure onPrescriptionTokens(string_: JString); cdecl;
    procedure onProgressUpdate(i: Integer); cdecl;
    procedure onStateChanged(cardlinkState: JCardlinkState); cdecl;
  end;
  TJCardlink = class(TJavaGenericImport<JCardlinkClass, JCardlink>) end;
Ich denke, ich muss jetzt eine Instanz von JCardlink erzeugen mit

Delphi-Quellcode:
var CardLink: JCardlink;
CardLink:=TJCardlink.JavaClass.INSTANCE;
Aber wie komme ich von da an die function isNfcEnabled? Die steckt doch in dem interface JCardlinkClass
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
702 Beiträge
 
#2

AW: Android: Klasse aus .jar benutzen

  Alt 26. Jul 2024, 15:42
Davon habe ich eigentlich keine Ahnung, aber geht denn nicht eins von den hier:

Delphi-Quellcode:
TJCardlink.JavaClass.isNfcEnabled;
CardLink.isNfcEnabled;
TJCardlink.JavaClass.INSTANCE.isNfcEnabled;
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.919 Beiträge
 
Delphi 12 Athens
 
#3

AW: Android: Klasse aus .jar benutzen

  Alt 26. Jul 2024, 15:44
Ich weiß keine Lösung, aber das interessiert mich auch.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
690 Beiträge
 
Delphi 12 Athens
 
#4

AW: Android: Klasse aus .jar benutzen

  Alt 29. Jul 2024, 08:23
Ich kapier das mit den Interfaces nicht.

Versuch1:
Delphi-Quellcode:
var CardLink: TJCardlink;

CardLink:=TJCardlink.JavaClass.INSTANCE; // <-- Inkompatible Typen TJCardlink und JCardlink
CardLink.JavaClass.isNfcEnabled(context);
Versuch2:
Delphi-Quellcode:
var CardLink: TJCardlink;

CardLink:=TJCardlink.Create; // <-- Inkompatible Typen TJCardlink und JCardlink
CardLink.JavaClass.isNfcEnabled(context);
Versuch3:
Delphi-Quellcode:
var CardLink: JCardlink;

CardLink:=TJCardlink.JavaClass.INSTANCE;
CardLink.JavaClass.isNfcEnabled(context); // <-- unbekannter Bezeichner JavaClass
CardLink.isNfcEnabled(context); // <-- unbekannter Bezeichner isNfcEnabled
Ich kann anscheinend nur eine Instanz von JCardlink anlegen. isNfcEnabled steckt aber in JCardlinkClass bzw. TJCardlink.JavaClass. Wie kommt das zusammen?
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
702 Beiträge
 
#5

AW: Android: Klasse aus .jar benutzen

  Alt 29. Jul 2024, 08:29
Hast du denn meine 3 Optionen probiert?
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
690 Beiträge
 
Delphi 12 Athens
 
#6

AW: Android: Klasse aus .jar benutzen

  Alt 29. Jul 2024, 09:52
Bisher nicht, weil ich der Meinung war, dass ich zuerst wie sonst üblich mit Create o.ä. eine Instanz erzeugen müsste.

Edit: Man sollte immer die Dokumentatinon gründlich lesen. Da steht es ja:
Zitat:
... the Cardlink object. This is a singleton object which always exists. It does not need to be created (instantiated).
Und das hier funktioniert tatsächlich:

Delphi-Quellcode:
if TJCardlink.JavaClass.isNfcEnabled(
      TAndroidHelper.Context
         .getApplicationContext) then
  ShowMessage('NFC enabled')
else
  ShowMessage('NFC disabled');
Danke für den Tipp

Geändert von TBx (31. Jul 2024 um 05:09 Uhr) Grund: Formatierung geändert, das Layout war zerrissen
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.996 Beiträge
 
Delphi 12 Athens
 
#7

AW: Android: Klasse aus .jar benutzen

  Alt 2. Aug 2024, 16:01
Alles unter JavaClass ist quasi ähnlich wie eine class method unter Delphi.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz