![]() |
Android: Klasse aus .jar benutzen
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:
![]() 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:
Ich denke, ich muss jetzt eine Instanz von JCardlink erzeugen mit
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;
Delphi-Quellcode:
Aber wie komme ich von da an die function isNfcEnabled? Die steckt doch in dem interface JCardlinkClass
var CardLink: JCardlink;
CardLink:=TJCardlink.JavaClass.INSTANCE; |
AW: Android: Klasse aus .jar benutzen
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; |
AW: Android: Klasse aus .jar benutzen
Ich weiß keine Lösung, aber das interessiert mich auch.
|
AW: Android: Klasse aus .jar benutzen
Ich kapier das mit den Interfaces nicht.
Versuch1:
Delphi-Quellcode:
Versuch2:
var CardLink: TJCardlink;
CardLink:=TJCardlink.JavaClass.INSTANCE; // <-- Inkompatible Typen TJCardlink und JCardlink CardLink.JavaClass.isNfcEnabled(context);
Delphi-Quellcode:
Versuch3:
var CardLink: TJCardlink;
CardLink:=TJCardlink.Create; // <-- Inkompatible Typen TJCardlink und JCardlink CardLink.JavaClass.isNfcEnabled(context);
Delphi-Quellcode:
Ich kann anscheinend nur eine Instanz von JCardlink anlegen. isNfcEnabled steckt aber in JCardlinkClass bzw. TJCardlink.JavaClass. Wie kommt das zusammen?
var CardLink: JCardlink;
CardLink:=TJCardlink.JavaClass.INSTANCE; CardLink.JavaClass.isNfcEnabled(context); // <-- unbekannter Bezeichner JavaClass CardLink.isNfcEnabled(context); // <-- unbekannter Bezeichner isNfcEnabled |
AW: Android: Klasse aus .jar benutzen
Hast du denn meine 3 Optionen probiert?
|
AW: Android: Klasse aus .jar benutzen
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:
Delphi-Quellcode:
Danke für den Tipp
if TJCardlink.JavaClass.isNfcEnabled(
TAndroidHelper.Context .getApplicationContext) then ShowMessage('NFC enabled') else ShowMessage('NFC disabled'); |
AW: Android: Klasse aus .jar benutzen
Alles unter JavaClass ist quasi ähnlich wie eine class method unter Delphi.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz