There's been a lot of people having issues with Google messages and I'll lay out all the troubleshooting steps and ways to get it working.
First off. Deregister your number from the Google messages web portal if you just recently moved to grapheneOS from iOS or went from stock to Graphene or changed to a new device,recently ported your phone number to a different carrier.
Secondly, Google messages will not work unless it is installed from the play store directly. Don't bother trying to get it from Aurora. It uses play install Referral API. It's about as picky as a banking application.
To quote the scripture xD
From Android source:
The android.permission.PERFORM_IMS_SINGLE_REGISTRATION permission must be defined by the messaging app with the RCS features. For this permission to be granted, the following must be true:
The app must be installed as a privileged app, meaning that it's preinstalled on the device and is allowed to access privileged permissions
The app must be set as the user's default SMS role using RoleManager
If both of these conditions aren't met, the app is denied access to the android.permission.PERFORM_IMS_SINGLE_REGISTRATION permission. This means that third party apps aren't allowed to access RCS single registration APIs as they require carrier certification on the device.
The android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE permission when granted to an app that also has the READ_CONTACTS permission allows the app to request the RCS capabilities of phone numbers using RcsUceAdapter. For this permission to be granted, the following must be true:
The app must be installed as a privileged app, meaning that it's preinstalled on the device and is allowed to access privileged permissions.
The app must be defined as one of the following RoleManager roles:
Default messaging app: Set by the user.
Default dialer app: Set by the user.
Default contacts app: A role introduced in Android 12 that allows the OEM to define a package name through the device overlay value config_systemContacts, which must correspond to the device's contacts app. That app is then given the contacts role.
Default messaging app: Set by the user.
Default dialer app: Set by the user.
Default contacts app: A role introduced in Android 12 that allows the OEM to define a package name through the device overlay value config_systemContacts, which must correspond to the device's contacts app. That app is then given the contacts role.
In short. Google messages expects to be a privileged app with the ability to read device identifiers and be assigned the default messaging app permission prior to first launch or it will fail. If it's notices even a slightly irregularity it will not register and you'll have to start over.
Here's how how to get it working.
1) Turn off your VPN. Turn off WiFi. Use Mobile data, preferably 5G so it uses 5G/LTE/GSM/WCDMA. Make sure re-route location requests is on and you're using the GrapheneOS proxy servers for SUPL and AGNSS. Don't use Google's for this process. You can after word. The latest update says location data is shared by the way, and even with the location permission on off google messages uses googles default SUPL and AGNSS servers anyways after reviewing the debug menu. So if that's a deal breaker for you I'd just use Signal . Like everyone should be anyways. But easier said then done.
2) Make sure the system apps com.android.ims has all special permissions and basic permissions. This goes for com.shannon.rcs as well if you have it on your device. Usually this entails all files access, change system settins, display over other apps. It they both need location all the time most importantly as well. Set the battery to unrestricted.
3) In Sandboxed Google play settings go to all services> account management > enable phone number verification. Give google play services Contacts(scope is fine), SMS, Network, sensors, display other over apps, unrestricted mobile data and battery and DCL via memory and storage set to allow. As of recently, you may also need to go to Google Settings and go to Auto fill and enable "SMS verification codes" I was getting errors in the loga during testing indicating the most recent version of Google messages is looking for VSMS(verified SMS) and auto fill. All of these can be revoked after we get RCS enabled expect for DCL via memory and storage, network and sensors.
4) Give Google play store phone, SMS, contacts(scope) network, sensors permissions.
5) Enable developer options. Turn on USB debugging. Make sure exploit protection for USB is set to Charging only while locked at least. In your terminal on your PC run adb devices -l thenrun
adb shell appops set com.google.android.gms
READ_DEVICE_IDENTIFIERS allow
6) Install Carrier Services if your carrier supports RCS messaging. Enroll in BETA. To speed up phone number verification you can run the same command for this app:
appops set com.google.android.ims
READ_DEVICE_IDENTIFIERS allow
Both of these can safely be revoked as well once RCS has been activated using deny instead of allow at the end of the command. Only revoke this once RCS is active.
7) Enroll in Google Messages BETA install Google messages. When you get the prompt to confirm the installation, allow the network permission. Denying it immediately will cause it not to work. Once installed immediately toggle airplane mode.
don't install it in secondary profile as it will not work for RCS unless its in the owner profile. You can later install it in a secondary profile but it will show RCS as enabled but will only send as an SMS. ( You won't see your phone # next to RCS either)*
Do not launch messsages**
Now go to Messages App info. Enable unrestricted battery and mobile data. Allow DCL via memory and storage. You'll get an error saying, "RCS is not available for this device" if you don't. Once you get messages working if you disable it you'll see it will even display this once RCS is activated. Toggling it back on makes it work again.
8) Go to Settings> Apps> Default apps and set messages as the default. This will immediately give messages all permissions aside from location. Once again don't launch messages. Now disable Calls logs, Set up storage scopes and music and audio scopes if you want. It needs contacts, SMS, Network, sensors and phone to function.
9) Launch Messages. Navigate to settings and enable RCS. Perform phone number verification. It may take up to two hours.
10) What you want see if the logs are the lines listed below
-RCS is available but RCS is not ready. - it's going to work be patient
-CARRIER_SETUP_PENDING. - Carrier received your request to register.
-Rcs is AVAILABLE for SelfIdentity. You'll want to see availability="7" - this means it's been received by your carrier. -This means it is performing VSMS or phone number verification (verified SMS). And it will activate shortly:
RcsSettingsDataService; fetching RCS SimInfo for RcsProvisioningId redacted-pii:sim_Id[chars:20 last three: {3 digit number will be the last 3 digits of your sim card your trying to activate RCS on} - it's pulling your ICCID to create a provisioning ID (MSISDN)
-Current Transport Chat type is : 2
Ready: true
-RCS is ready and it was off Trigger scheduling
-Bugle kickOffPendingIfNowConnected
-UPDATE_TRIGGER_CARRIER_CONFIG_CHANGED
Scheduling WORK_TYPE_UPDATE_PHONES_SIM_STATE using PWQ.
-Transition to verify MSISDN { you'll see a long string of characters here which is sort of like your IMSI}
If you see anything in the logs regarding . requires device to be idle. it's in the process of setting up RCS still. plug in your device and leave it idle.