German NB6 Flag_IMMUTABLE

so27

Active Member
Licensed User
Longtime User
Hallo zusammen,

ich habe seit dem SKD 31 ein Problem mit meinen Benachrichtigungen. Habe den aktuellen Core von B4A installiert, das Update auf Version 12 aber noch nicht durchgeführt, da es zu erheblichen Problemen mit meiner App kommt.

Alles funktioniert bisher problemlos. Die App startet und stellt alle Funktionen bereit. Wenn ich nun eine über NB6 erzeugte Benachrichtigung erstelle, dann stürzt die App mit dem folgenden Hinweis ab:
B4X:
nb6_createreceiverpendingintent (java line: 286)
java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4j.object.JavaObject.RunMethod(JavaObject.java:132)
    at name.b4a.iii.nb6._createreceiverpendingintent(nb6.java:286)
    at name.b4a.iii.nb6._addbuttonaction(nb6.java:97)
    at name.b4a.iii.main._benachrichtigung_erstellen_mit_buttons1(main.java:1037)
    at name.b4a.iii.main._activity_resume(main.java:870)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:213)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
    at name.b4a.iii.main$ResumeMessage.run(main.java:317)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:201)
    at android.os.Looper.loop(Looper.java:288)
    at android.app.ActivityThread.main(ActivityThread.java:7822)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
Caused by: java.lang.IllegalArgumentException: owsianowski.b4a.ice: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
    at android.app.PendingIntent.checkFlags(PendingIntent.java:375)
    at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:645)
    at android.app.PendingIntent.getBroadcast(PendingIntent.java:632)
    ... 18 more

Ich habe das Problem an anderer Stelle (Widgets) mit folgendem Code umgehen können:

B4X:
        Dim i As Intent
        i.Flags = 0x2000000 ' FLAG_IMMUTABLE

Nur was kann ich bei den NB6-Benachrichtigungen machen?
 

OliverA

Expert
Licensed User
Longtime User
Not recommended, but:
1) Create temp folder (such as c:\temp)
2) Install version 12 into temp folder (after install should have something like c:\temp\Anywhere Software)
3) Copy NB6.b4xlib from temp folder internal libraries (something like c:\temp\Anywhere Software\B4A\Libraries) to your B4A's install internal libraries (something like c:\Program Files\Anywhere Software\B4A\Libraries or 32 bit B4A c:\Program Files (x86)\Anywhere Software\B4A\Libraries).

Warning: Not recommended
 
Top