I have tried the Google contacts app, the Samsung contacts app, and the Asus contacts app.
Only the latter will sort Chinese contacts in Hanyu Pinyin order, without requiring the entire phone to be switched from English to the zh-cn locale.
Else they get sorted by radical (Unicode order).
If one sets the entire phone to zh-tw locale, one gets Zhuyinfuhao sorting.
Anyway throughout the experience we see the very short sighted assumptions that certain people speak certain languages and prefer certain sorting orders without getting any choices in between.
No, I'm not talking about first name versus last name. Nor am I talking about establishing custom pronunciations for each and every contact.
Anyway the user, me, prefers the English interface to his Android phone. However he has learned Chinese using Hanyu Pinyin. That's how he expects his characters to be sorted by. It is unfortunate that various Android app developers would have never imagined such a combination, for some reason.
And yes, even if one day one could just change the interface language of the contacts app, that would still also be too much of a sacrifice. Why should interface language be related to sorting method in the first place? Sure it's a good guess for the majority, but for the minority it's a hardwired nightmare.
Also, choosing English as interface language means it's anybody's guess which the user's preferred Chinese sorting order might be. So why not give the user the freedom to choose?
Android 13.
Sure, you might say, "See https://stackoverflow.com/questions/22907288/chinese-sorting-by-pinyin-in-javascript-with-localecompare and build your own app." But I don't want to build my own app, or root my phone.