AGB  ·  Datenschutz  ·  Impressum  







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

Mobile Permission

Ein Thema von IMPEGA · begonnen am 24. Aug 2024 · letzter Beitrag vom 24. Aug 2024
Antwort Antwort
IMPEGA

Registriert seit: 19. Jan 2008
Ort: Brhv
83 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Mobile Permission

  Alt 24. Aug 2024, 10:17
Hallo zusammen
Ich versuche meine erste APP zu schreiben, dabei stoße ich schon am Anfang auf kleine Probleme.
Ich möchte eine App erstellen, womit ich nur ein Log schreibe.
Sprich, 2 Buttons, drücke ich auf OK wird in einer Datei das Datum und Zeit geschrieben.

Dazu brauche ich die Mobile Permission.
Hier hackt es leider.

Installiert Delphi 12.1 und Mobile Permission per "GetIT Package Manage" installiert.

Mein Test-Code für die Permission (gefunden im Netz)
Delphi-Quellcode:
unit Unit2;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Memo.Types,
  FMX.StdCtrls, FMX.Controls.Presentation, System.Permissions,
{$IFDEF ANDROID}
  AndroidApi.Helpers, FMX.Platform.Android,
  Androidapi.JNI.Widget, FMX.Helpers.Android, Androidapi.JNI.Os,
{$ENDIF}

 FMX.Edit, System.IOUtils;

type
  TForm2 = class(TForm)
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
{$IFDEF ANDROID}
    PermissionWriteExternalStorage: string;
{$ENDIF}
  end;

var
  Form2: TForm2;

implementation

{$R *.fmx}

procedure TForm2.FormShow(Sender: TObject);
begin
 {$IFDEF ANDROID}
  PermissionWriteExternalStorage := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE);
  PermissionsService.RequestPermissions([PermissionWriteExternalStorage],
    procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
      begin
        if AGrantResults[0] = TPermissionStatus.Granted then
          ShowMessage('Erlaubt')
        else
          ShowMessage('Nicht erlaubt');
      end)
 {$ENDIF}
end;

end.
Ich bekomme diesen Fehler
[DCC Fehler] HeaderFooterTemplate.pas(51): E2250 Es gibt keine überladene Version von 'RequestPermissions', die man mit diesen Argumenten aufrufen kann

Testweise habe ich die Mobile Permission deinstalliert und eine ältere Version von GitHub installiert.
Das hat leider auch nicht funktioniert.

Kann mir jemand die Sache etwas erläutern? Bin nur ein Hobbycoder und mit Android habe ich noch nie zu tun gehabt.

Geändert von IMPEGA (24. Aug 2024 um 10:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#2

AW: Mobile Permission

  Alt 24. Aug 2024, 11:52
Hast du mal Nachgesehn?

* CodeVervollständigung
* zur CodePosition springen
* ...

Emba scheint an einigen Stellen doch endlich mal bissl was repariert zu haben (z.B. const/var und dergleichen geändert)
wie z.B. auch hier https://www.delphipraxis.net/215702-...ode-fehlt.html
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
741 Beiträge
 
#3

AW: Mobile Permission

  Alt 24. Aug 2024, 12:41
Probiere Mal:

Delphi-Quellcode:
procedure(const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray)
...
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
741 Beiträge
 
#4

AW: Mobile Permission

  Alt 24. Aug 2024, 12:48
Oder das hier noch:
Delphi-Quellcode:
var
  PA: TArray<String>;
begin
  ...
  SetLength(PA, 1);
  PA[0] := PermissionWriteExternalStorage;
  ...
  PermissionsService.RequestPermissions(PA,
    procedure ...
  Mit Zitat antworten Zitat
IMPEGA

Registriert seit: 19. Jan 2008
Ort: Brhv
83 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Mobile Permission

  Alt 24. Aug 2024, 13:40
@himitsu
Meinst du im Ernst, mir damit geholfen zu haben?
Danke für dein Interesse, gebracht hat es aber gar nichts.
Nicht jeder ist ein Profi. Es gibt auch Leute, die es halt ein wenig als Hobby versuchen. Einfach mal aus Spaß am Programmieren.
Ein Verweis auf ein ähnliches Problem bringt in meinem Fall gar nichts.
Dann bitte lieber gar nicht antworten, wenn es für dich zu einfach erscheint.

@Olli73
Vielen Dank, ich muss heute leider ziemlich lange arbeiten, werde es aber gleich morgen testen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#6

AW: Mobile Permission

  Alt 24. Aug 2024, 15:02
Wir sollen also für dich das jetzt erst bei uns installieren, weil du zu faul bist selbst nachzusehn
oder uns wenigstens die Codezeile (und vielleicht noch bissl danach und davor) zu zeigen,
von dem, was in der Fehlermeldung steht und wo wir jetzt nicht mal eben so bei uns nachsehn können?

Obwohl alles Wichtige in der Fehlermeldung genannt wird?



Du hast uns zwar deinen Code gezeigt, aber eben nicht das, wo der Fehler liegt, wobei standardmäßig niemand Dieses bei sich rumliegen hat.
HeaderFooterTemplate.pas

Abgesehn davon, dass ich die genannte Datei nichtmal im GitRepo zu diesem GetIt-Package finden kann.
https://getitnow.embarcadero.com/?q=...&categories=-1
https://getitnow.embarcadero.com/mob...t-for-android/
https://github.com/adrianosantostrei...ns/tree/master



An einer Stelle wird eine Funktion aufgerufen, welche es SO garnicht gibt.
Dass es diese Funktion aber gibt, wird auch gesagt, nur dass irgendwas bezüglich der Parametersignatur nicht stimmt.
* fehlende oder zusätzliche Parameter (können z.B. auch geänderte/neue/entfernte Default-Parameter sein)
* falsche/andere Typen (auch hier spielt eine Rolle, dass Delphi da zuletzt bissl was bei sich geändert hat, bezüglich Kompatibilitäten der TypeAlias)
* einfach nur ein andere Deklaration der Parameterübergabe (const/var/out, als Pointer oder nicht)
* andere CallingConvention (cdecl/stdcall/...)
* die Namen der Parameter sind aber egal, kommt nur auf die Typen und die Art und Weise drauf an (z.B. bei Callbacks und Events)

Ja, manchmal ändert sich an einer API etwas und dann passen Eigene oder Fremdcodes eben nicht mehr zum Anderem.
Und dass sich hier, bei anderen Usern, auch schon etwas geändert hat, was nach schon etwas nach deinem Problem klingt, und was dort der Grund war, das gab ich dir als Hinweis mit, damit du aus oberer Liste erstmal diesen Punkt prüfen kannst.
Aufgrund des Problems, von jemand anderem, hatte ich zwar erstmal auf Punkt 3 getippt, aber selbst wenn es jetzt Punkt 2 sein mag, ändert es nichts an der ursprünglichen Aussage, auch wenn der Tipp nicht ganz passen möge.

Bei dir ist alles Wichtige vorhanden, dann ist es doch ein Leichteres für dich, im Gegenzug für uns, dort einfach mal nachzusehn, was Delphi dir anzeigt, was es dort gern haben möchte, und im Gegenzug jenes damit zu vergleichen, was du an diese Stelle siehst.



Gut, wenn das mit dem TClassicStringDynArray stimmt,
dann hat sich hier an einem Typ etwas geändert, welcher zum alten Typen nicht kompatibel ist (also im Prinzip das, was die Fehlermeldung auch besagt),
aber genau das hättest du so auch bemerken können.


Auch wenn ich es eigenartig finde, dass es "sorum" geändert wurde, also von der neueren Syntax, welche dafür gut ist solche Inkompatibilitäten zu beseitigen, zurück auf eine Ältere, welche solche Inkompatibilitäten geradezu provokativ anzieht,
wobei es selten Gründe gibt, sowas absichtlich zu machen. (z.B. um zwei syntaktisch gleiche, aber logisch unterschiedliche Typen überladen zu können)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (24. Aug 2024 um 15:30 Uhr)
  Mit Zitat antworten Zitat
IMPEGA

Registriert seit: 19. Jan 2008
Ort: Brhv
83 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Mobile Permission

  Alt 24. Aug 2024, 20:14
OK, dieses Mal kann ich mich bedanken, damit kann ich etwas mehr anfangen.
Danke für die ausführliche Erklärung.
Heute war ein langer Tag, ich schaue morgen wie ich es umsetzen kann.

Nur ganz kurz zum Klarstellen.
Zitat:
Wir sollen also für dich das jetzt erst bei uns installieren, weil du zu faul bist selbst nachzusehn
Habe ich das je verlangt? Keiner zwingt dich zu antworten. Ich habe nur gehofft, jemand könnte es halt wissen, und mir einen Schubs geben.
So wie der "Olli73" es getan hat.
Und bevor du zu jemanden sagst "weil du zu faul bist selbst nachzusehn" solltest du denjenigen erst kennen.
Du brauchst nicht zu installieren, du musst auch nicht zu antworten. Du hast keine Lösung parat? Kein Problem, antworte halt nicht.

Danke für deine Hilfe
, das musste aber raus. Ich habe 12 Stunden Arbeit hinter mir und du quasselst von zu faul zum Nachsehen.
Damit komme ich echt schlecht klar.


Installiert habe ich das hier.
Mobile Permissions Component for Android 2.1

Der Fehler wird an dieser Stelle angezeigt.
      end) Dass das mit der Deklaration zusammenhängt, war mir schon irgendwie klar, nur bin ich nicht gut genug, um es selbst herauszufinden, wie es richtig sein sollte.
Jetzt kann ich gezielter nach der Lösung suchen, allerdings glaube ich "Olli73" hat er schon richtig erfasst.
Wie gesagt, heute war ein sehr langer Tag, morgen wird getestet.

Danke für Eure Unterstützung.



EDIT
Das funktioniert
procedure(const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray)

Geändert von IMPEGA (25. Aug 2024 um 12:10 Uhr)
  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 10:38 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