I found the real problem. The phone I use for debugging is Android 11. When I went to install the app, it complained about minimum SDK version. Without thinking, I changed that and didn't notice the newly appearing yellow warning marks on the permissions.
Moving to a phone with Android 12 and building for that fixes everything.
I do really need to target Android 11, so I'll have to set up the coding to support both, but I can do that now that I understand.