Content sharing crashing again on Android 14

Its back!

Running the camera demo within the demorunner (juce 7.0.8) I get this in AS logcat and app crashes:

2023-10-31 10:04:59.657 31645-31674 .jucedemorunner         com.rmsl.jucedemorunner              E  No implementation found for android.database.Cursor com.rmsl.juce.JuceSharingContentProvider.contentSharerQuery(android.net.Uri, java.lang.String[]) (tried Java_com_rmsl_juce_JuceSharingContentProvider_contentSharerQuery and Java_com_rmsl_juce_JuceSharingContentProvider_contentSharerQuery__Landroid_net_Uri_2_3Ljava_lang_String_2) - is the library loaded, e.g. System.loadLibrary?
2023-10-31 10:04:59.659 31645-31674 JavaBinder              com.rmsl.jucedemorunner              E  *** Uncaught remote exception! Exceptions are not yet supported across processes. Client PID 31575 UID 10080.
                                                                                                    java.lang.UnsatisfiedLinkError: No implementation found for android.database.Cursor com.rmsl.juce.JuceSharingContentProvider.contentSharerQuery(android.net.Uri, java.lang.String[]) (tried Java_com_rmsl_juce_JuceSharingContentProvider_contentSharerQuery and Java_com_rmsl_juce_JuceSharingContentProvider_contentSharerQuery__Landroid_net_Uri_2_3Ljava_lang_String_2) - is the library loaded, e.g. System.loadLibrary?
                                                                                                    	at com.rmsl.juce.JuceSharingContentProvider.contentSharerQuery(Native Method)
                                                                                                    	at com.rmsl.juce.JuceSharingContentProvider.query(JuceSharingContentProvider.java:60)
                                                                                                    	at android.content.ContentProvider.query(ContentProvider.java:1596)
                                                                                                    	at android.content.ContentProvider.query(ContentProvider.java:1692)
                                                                                                    	at android.content.ContentProvider$Transport.query(ContentProvider.java:292)
                                                                                                    	at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:107)
                                                                                                    	at android.os.Binder.execTransactInternal(Binder.java:1339)
                                                                                                    	at android.os.Binder.execTransact(Binder.java:1275)
2023-10-31 10:04:59.660 31645-31674 AndroidRuntime          com.rmsl.jucedemorunner              E  FATAL EXCEPTION: binder:31645_3
                                                                                                    Process: com.rmsl.jucedemorunner, PID: 31645
                                                                                                    java.lang.UnsatisfiedLinkError: No implementation found for android.database.Cursor com.rmsl.juce.JuceSharingContentProvider.contentSharerQuery(android.net.Uri, java.lang.String[]) (tried Java_com_rmsl_juce_JuceSharingContentProvider_contentSharerQuery and Java_com_rmsl_juce_JuceSharingContentProvider_contentSharerQuery__Landroid_net_Uri_2_3Ljava_lang_String_2) - is the library loaded, e.g. System.loadLibrary?
                                                                                                    	at com.rmsl.juce.JuceSharingContentProvider.contentSharerQuery(Native Method)
                                                                                                    	at com.rmsl.juce.JuceSharingContentProvider.query(JuceSharingContentProvider.java:60)
                                                                                                    	at android.content.ContentProvider.query(ContentProvider.java:1596)
                                                                                                    	at android.content.ContentProvider.query(ContentProvider.java:1692)
                                                                                                    	at android.content.ContentProvider$Transport.query(ContentProvider.java:292)
                                                                                                    	at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:107)
                                                                                                    	at android.os.Binder.execTransactInternal(Binder.java:1339)
                                                                                                    	at android.os.Binder.execTransact(Binder.java:1275)
2023-10-31 10:05:03.767   619-619   CompositionEngine       surfaceflinger                       E  [Application Error: com.rmsl.jucedemorunner#39190] Invalid device requested composition type change: Client (1) --> Client (1)

Phone is Pixel 8 Pro

Thank you for reporting. We are looking into this but it doesn’t seem like an easy one to crack.

1 Like

Thanks! It does look tricky indeed. I tried to trace down whats going on but got lost in JNI land.

Thank you. I think I finally figured it out and a fix is on the way.

Thank you for reporting. A fix has been released on develop

Thanks Attila!

Crash is gone indeed. We have noticed content sharing files to google drive does nothing.
Did a bit of investigation and for us it gets fixed adding the flag FLAG_GRANT_PREFIX_URI_PERMISSION (128) to the content sharing intent.

So in sharePreparedFiles:

constexpr int grantReadUriPermission   = 1;
constexpr int grantPrefixUriPermission = 128;
env->CallObjectMethod (intent, AndroidIntent.addFlags, grantReadUriPermission);
env->CallObjectMethod (intent, AndroidIntent.addFlags, grantPrefixUriPermission);
1 Like