Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Permissions der eigenen App öffnen (https://www.delphipraxis.net/210801-permissions-der-eigenen-app-oeffnen.html)

QuickAndDirty 13. Jun 2022 08:53


Permissions der eigenen App öffnen
 
Hallo ,
wie kann ich unter Android die Seite mit den Permissions der App oder noch besser die seite mit den Location Permissions der App öffnen?
Delphi-Quellcode:
System.Permissions.PermissionsService
Stellt diese funktion auf den ersten blick nicht bereit.
Muss ich das über einen intent machen?

Ist es dieser Intent
Delphi-Quellcode:
CONST
  cACTION_APPLICATION_DEVELOPMENT_SETTINGS = 'android.settings.APPLICATION_DETAILS_SETTINGS';

mjustin 13. Jun 2022 09:43

AW: Permissions der eigenen App öffnen
 
https://developer.android.com/refere...TAILS_SETTINGS

"Show screen of details about a particular application."

Von allen auf der Seite angebotenen Activity Actions scheint das die einzige zu sein, von der aus man zu den Permissions der angegebenen App gelangt.

QuickAndDirty 13. Jun 2022 12:20

AW: Permissions der eigenen App öffnen
 
Sieht das korrket aus?
Und
Wie kann ich 'com.my.app' per programm herausfinden so das die methode universal einsetzbar ist?
Delphi-Quellcode:
procedure OpenAppSettings;
{$IFDEF ANDROID}
  Const
    cACTION_APPLICATION_DETAILS_SETTINGS = 'android.settings.APPLICATION_DETAILS_SETTINGS';
  var
    Intent: JIntent;
    ResolveInfo: JResolveInfo;
    AppId:String;
{$ENDIF}
begin
{$IFDEF ANDROID}
  AppID := JStringToString(TAndroidHelper.Context.getApplicationContext.getPackageName);
  Intent := TJIntent.JavaClass.init( StringToJString(cACTION_APPLICATION_DETAILS_SETTINGS) );
  Intent.setData(StrToJURI('package:'+ AppID ));
  Intent.setFlags(TjIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
  ResolveInfo := SharedActivity.getPackageManager.resolveActivity(Intent, 0);
  if assigned(ResolveInfo) then
    SharedActivity.startActivity(Intent);
{$ENDIF}
end;

mjustin 13. Jun 2022 14:13

AW: Permissions der eigenen App öffnen
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1507196)
Delphi-Quellcode:
  Const
    cACTION_APPLICATION_DETAILS_SETTINGS = 'android.settings.APPLICATION_DETAILS_SETTINGS';
  AppID := JStringToString(TAndroidHelper.Context.getApplicationContext.getPackageName);
  Intent := TJIntent.JavaClass.init( StringToJString(cACTION_APPLICATION_DETAILS_SETTINGS) );
  Intent.setData(StrToJURI('package:'+ AppID ));
  Intent.setFlags(TjIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
  ResolveInfo := SharedActivity.getPackageManager.resolveActivity(Intent, 0);
  if assigned(ResolveInfo) then
    SharedActivity.startActivity(Intent);

Anstatt der selbst definierten Konstante sollte auch ein Auslesen der definierten Konstante funktionieren:

Delphi-Quellcode:
android.provider.Settings.JavaClass.APPLICATION_DETAILS_SETTINGS


Für Android entwickle ich nur mit Java, aber der sonstige Code sieht ok aus :)

QuickAndDirty 13. Jun 2022 15:20

AW: Permissions der eigenen App öffnen
 
Zitat:

Zitat von mjustin (Beitrag 1507200)
Zitat:

Zitat von QuickAndDirty (Beitrag 1507196)
Delphi-Quellcode:
  Const
    cACTION_APPLICATION_DETAILS_SETTINGS = 'android.settings.APPLICATION_DETAILS_SETTINGS';
  AppID := JStringToString(TAndroidHelper.Context.getApplicationContext.getPackageName);
  Intent := TJIntent.JavaClass.init( StringToJString(cACTION_APPLICATION_DETAILS_SETTINGS) );
  Intent.setData(StrToJURI('package:'+ AppID ));
  Intent.setFlags(TjIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
  ResolveInfo := SharedActivity.getPackageManager.resolveActivity(Intent, 0);
  if assigned(ResolveInfo) then
    SharedActivity.startActivity(Intent);

Anstatt der selbst definierten Konstante sollte auch ein Auslesen der definierten Konstante funktionieren:

Delphi-Quellcode:
android.provider.Settings.JavaClass.APPLICATION_DETAILS_SETTINGS

Aber wo in Delphi bekomme ich diese Konstante her?

mjustin 13. Jun 2022 15:32

AW: Permissions der eigenen App öffnen
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1507204)
Aber wo in Delphi bekomme ich diese Konstante her?

Vermutlich durch ein "uses JSettings", so wie es auch bei JIntent schon gemacht wird:

Delphi-Quellcode:
 Intent := TJIntent.JavaClass.init( JSettings.JavaClass.APPLICATION_DETAILS_SETTINGS );


Beispiel von SO https://stackoverflow.com/a/42686077/80901)

Delphi-Quellcode:
if aResultCode = TJActivity.JavaClass.RESULT_OK then
RESULT_OK ist zwar eine numerische Konstante, aber ich bin optimistisch dass es auch mit Strings geht :)

QuickAndDirty 13. Jun 2022 15:59

AW: Permissions der eigenen App öffnen
 
Ja geht mit Android.JNI.Provider
Delphi-Quellcode:
procedure TPermissions.OpenAppSettings;
{$IFDEF ANDROID}
  var
    Intent: JIntent;
    ResolveInfo: JResolveInfo;
    AppId:String;
{$ENDIF}
begin
{$IFDEF ANDROID}
  AppId := JStringToString(TAndroidHelper.Context.getApplicationContext.getPackageName);
  Intent := TJIntent.JavaClass.init( tJSettings.JavaClass.ACTION_APPLICATION_DETAILS_SETTINGS ); // tJSettings aus Unit Android.JNI.Provider
  Intent.setData(StrToJURI('package:'+AppId));
  Intent.setFlags(TjIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
  ResolveInfo := SharedActivity.getPackageManager.resolveActivity(Intent, 0);
  if assigned(ResolveInfo) then
    SharedActivity.startActivity(Intent);
{$ENDIF}
end;
Gibts eine Bestpractice um den Benutzer mit zuteilen das er Location Berechtigungen Aktivieren soll? Ich meine jetzt wo Android 12 es einem vermiest das in der App zu erfragen muss man ja den User dazu bewegen das über die Einstellungen der App zu tätigen.

himitsu 13. Jun 2022 16:42

AW: Permissions der eigenen App öffnen
 
Das wird jetzt auch immer wichtiger.

Neuerdings nimmt Android Apps alle Rechte weg, wenn man sie länger nicht geöffnet hatte.
Blöd, bei Apps, die unsichtbar im Hintergrund ihre arbeit leisten und man sie nur bei Problemen öffnet (also hoffentlich sehr selten), aber die ohne Rechte nicht mehr arbeiten können.

KodeZwerg 13. Jun 2022 17:32

AW: Permissions der eigenen App öffnen
 
Zitat:

Zitat von himitsu (Beitrag 1507211)
Das wird jetzt auch immer wichtiger.

Neuerdings nimmt Android Apps alle Rechte weg, wenn man sie länger nicht geöffnet hatte.
Blöd, bei Apps, die unsichtbar im Hintergrund ihre arbeit leisten und man sie nur bei Problemen öffnet (also hoffentlich sehr selten), aber die ohne Rechte nicht mehr arbeiten können.

Nur so eine Idee, da ich kein Android supporte fehlt mir da die Erfahrung.
Ich würde einmal wöchentlich (oder was auch immer angemessen ist) eine Art Splash-Screen aufpoppen lassen, der wiederum alles an Rechte einfordert was dein Programm zur Laufzeit benötigt.
So würde der OS Aktivität vorgegaukelt und man kann davon ausgehen das die Tokens nicht ablaufen.
Das wäre jedenfalls mein Beitrag dazu, gibt aber bestimmt elegantere Wege :-]

himitsu 13. Jun 2022 17:42

AW: Permissions der eigenen App öffnen
 
Nur dass sich hier z.B. bereits Viele beschweren, dass gewisse Virenscanner sich ständig "sinnlos" in den Vordergrund drängeln, obwohl sie aktuell eigentlich "garnichts" zu sagen haben.

Mich würde es bestimmt auch nerven, wenn da wöchentlich der SplashScreen kommt.


Hatte auch schon geschaut, ob man z.B. für einzelne Apps dieses Verhalten nicht deaktivieren könnte.

jobo 13. Jun 2022 18:57

AW: Permissions der eigenen App öffnen
 
[OT]
Zitat:

Zitat von himitsu (Beitrag 1507211)
Neuerdings nimmt Android Apps alle Rechte weg, wenn man sie länger nicht geöffnet hatte.

Sehr blöd bei Warnapps wie bspw. Nina.
Das müssten eigentlich alle Beteiligten wissen, interessiert aber scheinbar niemand. Aber man wird die nächste Katastrophe sicher schonungslos aufklären.
[/OT]

mjustin 14. Jun 2022 06:33

AW: Permissions der eigenen App öffnen
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1507208)
Ja geht mit Android.JNI.Provider
Delphi-Quellcode:
  ...
  Intent := TJIntent.JavaClass.init( tJSettings.JavaClass.ACTION_APPLICATION_DETAILS_SETTINGS ); // tJSettings aus Unit Android.JNI.Provider

Ja, das führende "T" hatte ich übersehen, ist es denn in der Unit tatsächlich ein kleines t ? Alle Klassennamen beginnen in der Regel mit einem "T", z.B. auch in der gleichen Zeile das TJIntent.

Ist zwar nur eine Kleinigkeit, aber bei einem Code Review würde ich da ein Fragezeichen dranschreiben ;)

mjustin 14. Jun 2022 06:36

AW: Permissions der eigenen App öffnen
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1507208)
J
Gibts eine Bestpractice um den Benutzer mit zuteilen das er Location Berechtigungen Aktivieren soll? Ich meine jetzt wo Android 12 es einem vermiest das in der App zu erfragen muss man ja den User dazu bewegen das über die Einstellungen der App zu tätigen.

Die generellen Best Practices für die Anforderung dieser Berechtigung sind hier beschrieben:

https://developer.android.com/traini...on/permissions

Ich würde einen neuen Thread hier dafür beginnen (neue Frage, neues Thema).

QuickAndDirty 14. Jun 2022 09:12

AW: Permissions der eigenen App öffnen
 
Zitat:

Zitat von mjustin (Beitrag 1507235)
Zitat:

Zitat von QuickAndDirty (Beitrag 1507208)
Ja geht mit Android.JNI.Provider
Delphi-Quellcode:
  ...
  Intent := TJIntent.JavaClass.init( tJSettings.JavaClass.ACTION_APPLICATION_DETAILS_SETTINGS ); // tJSettings aus Unit Android.JNI.Provider

Ja, das führende "T" hatte ich übersehen, ist es denn in der Unit tatsächlich ein kleines t ? Alle Klassennamen beginnen in der Regel mit einem "T", z.B. auch in der gleichen Zeile das TJIntent.

Ist zwar nur eine Kleinigkeit, aber bei einem Code Review würde ich da ein Fragezeichen dranschreiben ;)

Ach, ja sorry. Ich habe keine einzige Zeile von dem Code selbst geschrieben (abgesehen vom Metacode). Ist ein haufen coding styles zusammen gewürflet. Mein Dank an all die verschiedenen Developerforen da draußen!

Ich überlege ob ich heute ne For schleife selbst programmiere mit im internet gefunden code drinnen. ;-)

QuickAndDirty 14. Jun 2022 09:18

AW: Permissions der eigenen App öffnen
 
Zitat:

Zitat von mjustin (Beitrag 1507236)
Zitat:

Zitat von QuickAndDirty (Beitrag 1507208)
J
Gibts eine Bestpractice um den Benutzer mit zuteilen das er Location Berechtigungen Aktivieren soll? Ich meine jetzt wo Android 12 es einem vermiest das in der App zu erfragen muss man ja den User dazu bewegen das über die Einstellungen der App zu tätigen.

Die generellen Best Practices für die Anforderung dieser Berechtigung sind hier beschrieben:

https://developer.android.com/traini...on/permissions

Ich würde einen neuen Thread hier dafür beginnen (neue Frage, neues Thema).

Ich sehe . Sieht nützlich aus. Also muss ich es mir wohl tatsächlich durchlesen.
THX.

Falls ihr nen thread dazu aufmacht wo würde der geöffnent?

Ich kann nur sagen das einige Samsung Galaxy A51 und A52 user meiner App seit april keine Koordinaten mehr mit der App erfassen ohne zu wissen warum...da wurde das Android 12 auf den geräten ausgerollt...
und Android 12 erlaubt einem nicht Location Permissions permanent zu erteilen.
Also fragt die App immer wieder nach:
-Einmal erlauben (und beim nächsten mal wieder mit nem pop-up genervt werden)
-Für immer verbieten (und nie wieder mit nervigen pop-ups belästigt werden)

Klar was passiert...ob absichtlich , aus frust oder aus versehen.

In dem Dokument das du verlinkt hast , steht das wenn ich Coarse und Fine location Permission im Vordergrund Anfrage, der User sich dann coarse location aussuchen kann... :-(
Das ist so gar nicht hilfreich für den Zweck der App.

Rollo62 14. Jun 2022 09:43

AW: Permissions der eigenen App öffnen
 
Ich bin (noch) in der glücklichen Lage dass ich die Background-Location komplett rauswerfen konnte, und das im Foreground tricksen kann.
Deshalb habe ich das Demo in Kastri auch nicht ausgiebig getestet.
Funktioniert das auch nicht permanent im Background, auf Android 12, habt Ihr das mal getestet ?

QuickAndDirty 14. Jun 2022 09:49

AW: Permissions der eigenen App öffnen
 
Zitat:

Zitat von Rollo62 (Beitrag 1507245)
auf Android 12, habt Ihr das mal getestet ?

Du meinst selbst oder beim Endbenutzer?

Ich habe mir nur die Update notes vom Samsung Galaxy A51 auf Android 12 durchgelesen.

https://doc.samsungmobile.com/sm-a515u/cct/doc.html
"Sie können einer App jetzt den einmaligen Zugriff auf Ihr Mikrofon, Ihre Kamera oder Ihren Standort gewähren. Alle Genehmigungen, die eine App seit einiger Zeit nicht mehr verwendet hat, werden automatisch widerrufen. Sie können Apps im regulären Berechtigungs-Pop-up nicht mehr die Genehmigung erteilen, Ihren Standort immer einzusehen. Damit Apps auf Ihren Standort zugreifen können, wenn sie nicht verwendet werden, müssen Sie die Seite mit den Standortberechtigungen für die App in den Einstellungen aufrufen."

Rollo62 14. Jun 2022 10:01

AW: Permissions der eigenen App öffnen
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1507246)
Zitat:

Zitat von Rollo62 (Beitrag 1507245)
auf Android 12, habt Ihr das mal getestet ?

Du meinst selbst oder beim Endbenutzer?

Wie auch immer, ich meinte ob das Deaktivieren der Rechte und/oder das "Hochpoppen" der Meldungen da wirklich passiert,
und in welcher Form das genau passiert.
Wenn es passiert, dann kann es ja auf jedem Teil irgendwie anders aussehen und anders umgesetzt sein.

Zitat:

Zitat von QuickAndDirty (Beitrag 1507244)
Also fragt die App immer wieder nach:
-Einmal erlauben (und beim nächsten mal wieder mit nem pop-up genervt werden)
-Für immer verbieten (und nie wieder mit nervigen pop-ups belästigt werden)

Und damit, ob das Problem vielleicht durch die Kastri-Umsetzung im Demo vielleicht schon beseitigt ist.

QuickAndDirty 15. Jun 2022 09:30

AW: Permissions der eigenen App öffnen
 
Zitat:

Zitat von Rollo62 (Beitrag 1507247)
Zitat:

Zitat von QuickAndDirty (Beitrag 1507246)
Zitat:

Zitat von Rollo62 (Beitrag 1507245)
auf Android 12, habt Ihr das mal getestet ?

Du meinst selbst oder beim Endbenutzer?

Wie auch immer, ich meinte ob das Deaktivieren der Rechte und/oder das "Hochpoppen" der Meldungen da wirklich passiert,
und in welcher Form das genau passiert.
Wenn es passiert, dann kann es ja auf jedem Teil irgendwie anders aussehen und anders umgesetzt sein.

Zitat:

Zitat von QuickAndDirty (Beitrag 1507244)
Also fragt die App immer wieder nach:
-Einmal erlauben (und beim nächsten mal wieder mit nem pop-up genervt werden)
-Für immer verbieten (und nie wieder mit nervigen pop-ups belästigt werden)

Und damit, ob das Problem vielleicht durch die Kastri-Umsetzung im Demo vielleicht schon beseitigt ist.

Ich kenne die Kastri-Umsetzung(???) nicht.

Rollo62 15. Jun 2022 10:18

AW: Permissions der eigenen App öffnen
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1507310)
Ich kenne die Kastri-Umsetzung(???) nicht.

Deshalb hatte ich unten einen Link zu dem Demo auf Github reinkopiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 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