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];
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.