Einzelnen Beitrag anzeigen

Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#6

AW: Androidapi.JNI Interface und function : TJavaArray<>; cdecl;

  Alt 18. Jun 2014, 16:21
da nicht jeder das entsprechende USB Gerät hat, hab ich mal versucht ein äquivalentes Beispiel zu finden.
und bin auf den AccountManager gestoßen.

Da ist genau das gleiche Problem bei der Funktion

function getAccounts : TJavaArray<JAccount>; cdecl;

Wenn in einer Funktion ein TJavaArray zurückgegeben wird, dann funktioniert irgendwie der Zugriff auf die Elemente nicht so, wie man denkt ..
Ich hab das DemoProjekt mal einfach angehangen ..
Delphi-Quellcode:
  [JavaSignature('android/accounts/AccountManager')]
  JAccountManager = interface(JObject)
    ['{3D4BB88D-DAC5-4113-94EE-427A4323C813}']
    function addAccountExplicitly(account : JAccount; password : JString; userdata : JBundle) : boolean; cdecl;// (Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Z A: $1
    function blockingGetAuthToken(account : JAccount; authTokenType : JString; notifyAuthFailure : boolean) : JString; cdecl;// (Landroid/accounts/Account;Ljava/lang/String;Z)Ljava/lang/String; A: $1
    function getAccounts : TJavaArray<JAccount>; cdecl; // ()[Landroid/accounts/Account; A: $1
    function getAccountsByType(&type : JString) : TJavaArray<JAccount>; cdecl; // (Ljava/lang/String;)[Landroid/accounts/Account; A: $1

Der Zugriff funktioniert nicht, auch wenn accounts.Length größer Null ist:

Delphi-Quellcode:
      am := TJAccountManager.JavaClass.get(SharedActivityContext);
      accounts := am.getAccounts;
      account := accounts.Items[0];
Angehängte Dateien
Dateityp: rar AccountManagerTest.rar (13,7 KB, 27x aufgerufen)
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat