Delphi-PRAXiS
Seite 1 von 2  1 2      

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 Uhr.
Seite 1 von 2  1 2      

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