EDIT: It was pointed out below by u/lukmly013 that SDR++ supports RTL-SDR directly. I have removed the rtl_sdr driver app and it works.
So, it is as simple as downloading the SDR++ app and enabling the USB-C port. No need to mess around with the driver app and its security settings.
This is a PSA as I could not find online whether a GrapheneOS would be able to run an SDR dongle or not.
I was skeptical about this working because GrapheneOS has several hardened security features and does not allow root access. Since the RTL-SDR dongle is a USB device that requires coordination between a “driver” app and second SDR app I wasn’t sure if such a configuration would work.
Conclusion: It does work!
I am using a USB-C to USB 3.0 OTG adapter and the rtl-sdr blog v4 dongle with a generic antenna. My phone is a Pixel 7.
The SDR app I have used is SDR++: https://github.com/AlexandreRouma/SDRPlusPlus/
The driver required is “Rtl-sdr driver”, available via F-droid: https://f-droid.org/packages/marto.rtl_tcp_andro/
Both of these can be downloaded via Obtainium.
As for the phone settings:
Under “Security” settings, make sure the USB-C port is not set to “Off” or “Charging-Only”.
In that same menu, if you see the sub-menu “USB peripherals”, make sure that new USB peripherals are allowed. In my case I am almost sure that I had this sub-menu before, but I don’t see it anymore.
In the app info menu of the Rtl-sdr driver app (long-click on app icon), toggle to ON the “Exploit protection compatibilit mode”
You should now be able to open the SDR++, click play, and find some bands.
This was enough to get the RTL-SDR to work in my phone.
Hopefully someone else finds this useful.
I tried it out and it works well with only SDR++. I have edited my post to correct this, thanks!