Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Probleme auf Android 12 und 13 mit TJPendingIntent (https://www.delphipraxis.net/213151-probleme-auf-android-12-und-13-mit-tjpendingintent.html)

QuickAndDirty 5. Jun 2023 15:33

Probleme auf Android 12 und 13 mit TJPendingIntent
 
Folgender Code scheitert auf Android 12 und 13
Delphi-Quellcode:
var
    ClassIntent: JIntent;
    ClassIntent := TJIntent.JavaClass.init(TAndroidHelper.Context, TAndroidHelper.Activity.getClass);
    PendingIntent := TJPendingIntent.JavaClass.getActivity(TAndroidHelper.Context, 0,
      ClassIntent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_SINGLE_TOP or TJPendingIntent.JavaClass.FLAG_IMMUTABLE), 0);
mit folgender Fehlermeldung
Delphi-Quellcode:
java.lang.IllegalArgumentException: <appname> Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE&#65279; be specified when creating a PendingIntent.
Wie soll ich das TJPendingIntent.JavaClass.FLAG_IMMUTABLE Flag setzen?

hat einer ne Idee?

Benutze Delphi 11.3, frisch installiert..(also update von 11.1)

QuickAndDirty 6. Jun 2023 09:21

AW: Probleme auf Android 12 und 13 mit TJPendingIntent
 
Ich bin ein bisschen gierig nach Aufmerksamkeit.
Ist das eine Known issue?
Ist mein googlefoo zu schlecht?

Edit:Ich habe den code mal in wie folgt geändert...führt aber nicht zu einer verbesserung bei Android 12 und 13
Delphi-Quellcode:
Const
  FLAG_MUTABLE:Integer  =$02000000;
  FLAG_IMMUTABLE:Integer =$04000000;//TJPendingIntent.JavaClass.FLAG_IMMUTABLE
Begin
      Flags := TJIntent.JavaClass.FLAG_ACTIVITY_SINGLE_TOP;
      TLog.d('OSVersion: Major='+TOSVersion.Major.tostring+' Minor='+TOSVersion.Minor.ToString+' Name='+TOSVersion.Name);
      If TOSVersion.Major>=12 then // >= Android 12
        Flags := Flags or FLAG_MUTABLE;
      ClassIntent := TJIntent.JavaClass.init(TAndroidHelper.Context, TAndroidHelper.Activity.getClass);
      PendingIntent := TJPendingIntent.JavaClass.getActivity(TAndroidHelper.Context, 0,
                                                             ClassIntent.addFlags(Flags), 0);
      FNFCPresent := false;
end;

QuickAndDirty 6. Jun 2023 12:03

AW: Probleme auf Android 12 und 13 mit TJPendingIntent
 
[OT]aaaaaaaaaaaaah[/OT]
Oh man lesen. LESEN! Hilft total... unglaublich. Warum hat mir das keiner gesagt? Was ist das füe eine Community?
Delphi-Quellcode:
var
  ClassIntent: JIntent;
  Flags:Integer;
Const
  FLAG_MUTABLE:Integer  =$02000000;
  FLAG_IMMUTABLE:Integer =$04000000;//TJPendingIntent.JavaClass.FLAG_IMMUTABLE
  FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT:Integer = $01000000;
Begin
      Flags := TJIntent.JavaClass.FLAG_ACTIVITY_SINGLE_TOP;
      TLog.d('OSVersion: Major='+TOSVersion.Major.tostring+' Minor='+TOSVersion.Minor.ToString+' Name='+TOSVersion.Name);
      If TOSVersion.Major>=12 then // >= Android 12
        Flags := Flags or FLAG_MUTABLE;
      ClassIntent := TJIntent.JavaClass.init(TAndroidHelper.Context, TAndroidHelper.Activity.getClass);
      PendingIntent := TJPendingIntent.JavaClass.getActivity(TAndroidHelper.Context, 0,
                                                                ClassIntent.addFlags(Flags), Flags);
end;
Der letzte Parameter von getActivity heist "Flags".
Das ist vermutlich noch nicht optimal... aber es geht wenigstens schonmal ...
von hieraus muss ich noch etwas testen... ob ClassIntent wirklich auch diese Flags braucht oder nur der Aufruf von TJPendingIntent.JavaClass.getActivity

himitsu 6. Jun 2023 13:36

AW: Probleme auf Android 12 und 13 mit TJPendingIntent
 
Der Sichdamitauskennende ist vielleicht grade im Urlaub (oder breits an Altersschwäche ausgestorben).

QuickAndDirty 7. Jun 2023 09:22

AW: Probleme auf Android 12 und 13 mit TJPendingIntent
 
Zitat:

Zitat von himitsu (Beitrag 1523121)
Der Sichdamitauskennende ist vielleicht grade im Urlaub (oder breits an Altersschwäche ausgestorben).

Hauptsache er ist nicht auch zu den Youtube-Tutorial-Konsumenten übergelaufen. Wir brauchen doch mindestens einen Sensei der sich auskennt und die Kunst des Lesens gemeistert hat.
Naja , wenigstens bin ich jetzt mit dem Problem durch.

TurboMagic 8. Jun 2023 11:54

AW: Probleme auf Android 12 und 13 mit TJPendingIntent
 
Hallo,

ja, da hate sich glaube ich was im Android geändert.
Solche Änderungen sind immer ein bischen doof.

Grüße
TurboMagic


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