https://www.youtube.com/watch?v=QwFLA5TrviI
that's the problem, in adb shell I ran:
pm grant com.google.android.gms android.permission.WRITE_CONTACTS
pm grant com.google.android.gms android.permission.GET_ACCOUNTS
and sync was fixed.
(NOTE this deny permission did get copied to a new phone by account setup and it had the same problem!)
I hope this helps someone! this was a weird one!
ctrl-c on the laptop to stop the log, and now on the laptop run:
adb shell
in the shell, run: (with what ever package threw the error for you)
dumpsys package com.google.android.gms | grep -i false
I saw this at the bottom:
android.permission.WRITE_CONTACTS: granted=false, flags=[ USER_SET|GRANTED_BY_DEFAULT]
android.permission.GET_ACCOUNTS: granted=false, flags=[ USER_SET|GRANTED_BY_DEFAULT]
#android
#contacts
#bug
how to fix contact sync not working on android
or contact sync says it need contacts permission
you will need USB debugging enabled and ADB on a laptop
enable usb debugging, connect to linux laptop, run:
adb logcat
(this will display the live logs)
on the phone try to sync (disable and enable contact sync) and follow the logs,
I got an error: com.google.android.gms did not have contact permission
gms is a hidden system app so it does not show up on the phone at all